Conversation
- New release-pipeline.yml: merges dev→main, bumps version, pushes tag in a single workflow dispatch (replaces 13-step manual process) - Add sync-dev job to release.yml: auto-merges main→dev after publish - Skip heavy platform builds on version-bump PRs in build.yml Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Export CURRENT before Python subprocess reads it (was KeyError) - Remove unused skip_ci_wait input - Check dev branch existence before git fetch (avoids failure) - Add run ID to fallback branch name to prevent collisions Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
feat: add one-click release pipeline workflow
There was a problem hiding this comment.
Pull request overview
Adds automation around the release flow by introducing a one-click release pipeline, ensuring main is synced back into dev after a successful tagged release, and reducing CI load for version-bump PRs.
Changes:
- Add a
sync-devjob torelease.ymlto auto-mergemain→devafter publishinglatest.json, with PR fallback on conflicts. - Add a new
release-pipeline.ymlworkflow to mergedev→main, bump version, and push a release tag in one run. - Skip macOS/Linux platform build jobs for
chore-bump-v*version-bump PR branches.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| .github/workflows/release.yml | Adds post-release main → dev synchronization job with conflict PR fallback. |
| .github/workflows/release-pipeline.yml | Introduces a workflow_dispatch “one-click” release pipeline (merge, bump, tag). |
| .github/workflows/build.yml | Avoids running platform builds on version-bump PR branches. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - uses: actions/checkout@v4 | ||
| with: | ||
| fetch-depth: 0 | ||
| token: ${{ secrets.RELEASE_AUTOMATION_PAT || github.token }} | ||
|
|
||
| - name: Configure git | ||
| run: | | ||
| git config user.name "github-actions[bot]" | ||
| git config user.email "41898282+github-actions[bot]@users.noreply.github.com" | ||
|
|
||
| - name: Merge main into dev | ||
| env: | ||
| GH_TOKEN: ${{ secrets.RELEASE_AUTOMATION_PAT || github.token }} | ||
| run: | |
There was a problem hiding this comment.
sync-dev falls back to github.token for both actions/checkout and GH_TOKEN. In this repo, release-bump.yml explicitly requires secrets.RELEASE_AUTOMATION_PAT because the default token often cannot create PRs (createPullRequest not permitted). Consider requiring the PAT here as well (or gracefully skipping PR creation when it’s absent) so the conflict fallback doesn’t fail mid-sync.
| # Merge dev into main (non-interactive) | ||
| echo "Merging origin/dev into main..." | ||
| git merge origin/dev --no-edit -m "Merge branch 'dev' into main for release" | ||
|
|
There was a problem hiding this comment.
This merge step doesn’t handle conflicts beyond failing the job. Since this workflow is meant to be “one-click”, consider detecting merge conflicts and switching to a PR-based flow (similar to sync-dev in release.yml) so the pipeline can still complete with a clear next action instead of leaving a failed run.
| echo "Commits from dev:" | ||
| git log origin/main..HEAD --oneline | ||
| else | ||
| git push origin main | ||
| echo "Pushed merged main." | ||
| fi | ||
|
|
There was a problem hiding this comment.
The workflow pushes to main immediately after merging dev (before the version bump and tag). If a later step fails (bump/commit/tag), main is left partially updated without a corresponding release/tag. Consider deferring the push until after the version bump commit is created (single push), or doing all work on a temporary branch and only updating main once the entire pipeline is ready.
| echo "Commits from dev:" | |
| git log origin/main..HEAD --oneline | |
| else | |
| git push origin main | |
| echo "Pushed merged main." | |
| fi | |
| else | |
| echo "Merged dev into local main. Deferring push until after version bump/tag steps succeed." | |
| fi | |
| echo "Commits from origin/main to current HEAD:" | |
| git log origin/main..HEAD --oneline |
No description provided.