|
@@ -1,4 +1,46 @@
|
|
|
-# promote nightly to stable
|
|
|
+# Create a PR that promotes the current main pre-release to the next stable release
|
|
|
#
|
|
|
-# runs the various git commands to update the version
|
|
|
-# should be followed up by a stable release
|
|
|
+# IE if the current master version is 0.4.0-rc.7, this will create a PR to promote it to 0.4.0
|
|
|
+#
|
|
|
+# - update the version in the Cargo.toml to v0.4.0
|
|
|
+# - generate a v0.4 branch
|
|
|
+# - push the branch to the repository
|
|
|
+# - then bump 0.4.0-rc.1 to 0.5.0-rc.0
|
|
|
+#
|
|
|
+# This means main will never be a "stable" release, and we can always merge breaking changes to main
|
|
|
+# and backport them to the latest stable release
|
|
|
+#
|
|
|
+# This is configured to be ran manually, but could honestly just be a release workflow
|
|
|
+
|
|
|
+on:
|
|
|
+ workflow_dispatch:
|
|
|
+
|
|
|
+permissions:
|
|
|
+ actions: write
|
|
|
+
|
|
|
+jobs:
|
|
|
+ promote:
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+ steps:
|
|
|
+ - uses: actions/checkout@v4
|
|
|
+ - name: Publish the next pre-release
|
|
|
+ run: |
|
|
|
+ git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
|
|
+ git config --global user.name "github-actions[bot]"
|
|
|
+
|
|
|
+ # go from eg 0.4.0-rc.7 to 0.4.0, committing the change
|
|
|
+ cargo workspaces version -y minor
|
|
|
+
|
|
|
+ # create a new branch for the release
|
|
|
+ RELEASE_BRANCH=$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[0].version')
|
|
|
+ RELEASE_BRANCH=v$(echo $RELEASE_BRANCH | sed 's/\.[0-9]*$//')
|
|
|
+ git branch $RELEASE_BRANCH
|
|
|
+
|
|
|
+ # go from 0.4.0 to 0.5.0-rc.0
|
|
|
+ cargo workspaces version -y preminor --pre-id rc
|
|
|
+
|
|
|
+ # push the new branch to the repository
|
|
|
+ git push origin $RELEASE_BRANCH
|
|
|
+
|
|
|
+ # push the new version to the repository
|
|
|
+ git push origin main
|