Shared build pipeline for plugins on GitHub and Bitbucket.
Source code: https://github.com/tangibleinc/pipeline
The goal is to seamlessly upgrade from the previous Bitbucket Pipeline v2 to GitHub Actions.
-
Create zip archive
-
{plugin}-latest.zip
on Git commit - branchmain
ormaster
-
{plugin}-{branch}-latest.zip
on Git commit - other branches -
{plugin}-{version}.zip
on Git version tag
-
-
Copy zip file to release on project page
-
Releases
folder on GitHub -
Downloads
folder on BitBucket
-
-
Copy zip file to update server
- On version release, publish to update server
- On every commit, publish preview release with optional branch suffix
-
Create change log from Git commit messages
-
Deploy metadata to an event API
Create a file named bitbucket-pipelines.yml
.
# See https://github.com/tangibleinc/pipeline
image: php:8.1-fpm
pipelines:
# On every commit
default:
- step:
script:
- curl -sL "https://${BB_AUTH_STRING}@api.bitbucket.org/2.0/repositories/tangibleinc/tangible-pipeline-v3/downloads/run" | bash
# On every version tag
tags:
"*":
- step:
script:
- curl -sL "https://${BB_AUTH_STRING}@api.bitbucket.org/2.0/repositories/tangibleinc/tangible-pipeline-v3/downloads/run" | bash
For existing projects, change v2
to v3
in the URL of the Bitbucket pipeline script.
Alternatively use the GitHub URL.
https://raw.githubusercontent.com/tangibleinc/pipeline/main/run
Status: Work in progress
Create a file at .github/workflows/release.yml
.
name: Release
permissions:
contents: write
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Bun
uses: oven-sh/setup-bun@v2
- name: Install dependencies
run: bun install
- name: Create archive
run: bunx roll archive -y
- name: Install pipeline
run: mkdir -p publish && cd publish && git clone https://github.com/tangibleinc/pipeline
- name: Add latest tag as needed
uses: EndBug/latest-tag@latest
if: ${{ ! startsWith(github.ref, 'refs/tags/') }}
- name: Before release script
run: bun run publish/pipeline/before-release.ts
- name: Release tag
uses: softprops/action-gh-release@v2
if: ${{ startsWith(github.ref, 'refs/tags/') }}
with:
body_path: publish/release.md
files: publish/*.zip
- name: Release preview at latest commit
uses: softprops/action-gh-release@v2
if: ${{ ! startsWith(github.ref, 'refs/tags/') }}
with:
body_path: publish/release.md
files: publish/*.zip
tag_name: latest
make_latest: true
- name: After release script
run: bun run publish/pipeline/after-release.ts
To give the pipeline access to private repositories, refer to:
Use GitHub Action ssh-agent
to pass one or more private keys.
- uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.TANGIBLE_PIPELINE_SSH_KEY }}