How to setup GitHub Actions to bump the Xcode version
I know what you think: "Updating the version is just one click away. Does it worth it? " It depends.
In our case, we have 6 targets (3 for production and 3 for staging), so what that means is that we have to go through all of the 6 targets and update them each time. And guess what, most of the time we forget about it and then we rush to create a PR to bump the version.
We also noticed that we don't have a procedure in place on when to update the version and that's when the GitHub Actions come into play.
So we came up with this process:
1) A release branch is created from master
2) We create a branch called bump/vX.X.X
and our GA will:
- Checkout the project
- Update the Xcode version (using agvtool) to match the X.X.X on the branch
- Commit the changes
- Create a PR to
master
with the updated version
To achieve this process we came up with the following GA:
name: Bump Marketing Version and Open Pull Request
on:
create:
branches:
- 'bump/v*.*.*'
jobs:
bump-version-and-open-pr:
runs-on: macos-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set new marketing version
run: |
VERSION=${GITHUB_REF#refs/heads/bump/v}
echo New version will be $VERSION
if [ -z "$VERSION" ]
then
echo "Error: No version number found in branch name."
exit 1
fi
agvtool new-marketing-version $VERSION
- name: Commit and push changes
run: |
git config user.email "github-actions@github.com"
git config user.name "Github Actions"
git commit -am "Bump marketing version"
git push origin HEAD
- name: Open pull request
uses: peter-evans/create-pull-request@v5.0.0
with:
commit-message: "Bump marketing version"
branch: "${{ github.ref }}"
title: "Version bump"
body: "Version bump"
base: "master"
If you are familiar with GA then you will find this .yml
easy to understand (otherwise, I would advise you to get familiar with the basic concepts and then revisit this post). Just place the file under /.github/workflows
and it's ready to run.
I hope you find this post useful! Happy coding!