Manual Release Process
Updates and releases to this actions monorepo¶
In order to push changes to the actions, so that any downstream workflows can use the changes or when any of the actions or workflows need to be updated. The current process for this actions repo is:
- Set up your workstation with this repo and to sign commits and tags
- Ensure you have a local copy of this
actionsrepo cloned to your workstation - Follow GitHub's signing tags docs to ensure you can sign tags from your workstation
- Create a development branch and make the proper code changes
- You should use the
dev-*naming convention (example:dev-unique_branch_name_here) - Update the specific action or workflow, as needed
- You should use the
- Determine the next version for this
actionsrepo- Check with
@rwaightto determine the version level change - The changes should be either
patch,minor, ormajor - Make note of the next version, as it will be used later in the release process
- Check with
- Open a pull request from your development branch into
base: main- Be sure to include the proper
version:label
- Be sure to include the proper
- Have your pull request reviewed, then merge the changes into
main - Make a note of the commit that was merged into main (example: "merged commit
8675309intomain") - The value listed for commit is the first seven (7) characters of the commit hash
- Update your local clone of this
actionsrepo with the changes frommain - If you have your development branch open, issue
git stashto save the local changes - Fetch the remote branches with
git fetch --all - Switch to the
mainbranch withgit checkout main - Use
git pull origin mainto ensure your local clone is updated from origin - Verify your local clone has the latest commit to
main - Use one of the following commands to get the list of recent commits:
git log --pretty=format:"%h - %an, %ar : %s" --since=3.daysgit log --pretty=onelinegit log --pretty=format:"%h - %an, %ar : %s" --since=2.weeksgit log --pretty=format:"%h - %an, %ar : %s" --since=1.week
- Look for the commit that was merged into main
- Alternatively, pipe the output from the
git logcommand intogrepand add the commit- Example:
git log --pretty=oneline | grep 8675309
- Example:
- Use
echoto remind yourself of the commit that will be used for the newgit tag, example:echo "the commit linked to v1.1.1 is 8675309"
- Create a signed
git tagand verify the signed tag - Follow GitHub's signing tags docs to ensure you can sign tags from your workstation
- You will use the
-a,-m, and-soptions when creating and signing the tag - Use
git tagand the-soption to create the tag for the next version, example:git tag -a v1.1.1 -m "Code updated to v1.1.1" -s 8675309
- You will use the
-voption to verify the signed tag - Sign the tag with
git tag -v v1.1.1 - Confirm you see a
gpg: Good signatureresponse from issuing thegit tag -vcommand - Push the signed and verified tag to this repo (origin)
- Be cerain that you have signed and verified the tag before proceeding
- Push the signed and verified tag with
git push -f origin v1.1.1 - Ask
@rwaightwhy this is not part of a GitHub workflow (or a composite action) in this repo... because it should be
Notes about reducing time spent on the release process¶
There are a few things to consider when attempting to reduce the time spent on the release process.
- Keeping a changelog or other documentation for the changes made, without having to look through PRs
- Keeping the major and minor tags updated when a new version is released
- Using automation but now allowing automation to push to protected branches