Description
As a followup to #205, the release process should be moved into a github action so that it can be easy triggered by a maintainer and wont depend on any one individuals machine.
There is currently a workflow located at .github/workflows/publish.yml
which triggers when a release is created but it does package everything correctly. It compiles the binaries for each platform but it doesn't package them for each OS, follow the correct naming convention, or removing debugging info. If this is used, then it will need to be modified in some way.
I made an initial attempt at running the project's make
commands in CI and ran in to issues because they use a docker container to build everything. There are GHA that can be used for this but they will require more investigation. Getting these to work would set us up with the artifacts that are ready to go and match previous builds. I'm also a fan of being able to build a project with the same command in CI and locally.
Overall suggested release process:
- A maintainer creates a new draft release in the repo's releases section
a. The name should follow semantic convention prepended with a 'v'
b. A tag with the same name should be created on the latest commit to master
c. Release notes should be generated using the previous tag and the new tag as the range
d. Check the box to Set as a pre-release
e. Save as a draft - The release GHA should now trigger to build and publish the release artifacts
- Use the newly created tag for the release version and artifact name
This is currently pulled from files and requires a release PR to update them. I'd like to change it so no release PR is needed. Non release builds could use something likedev
or{latest tag}-{commits since latest tag}-{commit sha}
. Thegit
command to check if there is a tag on the current commit defaults to something along these lines - Build the artifacts in parallel
- The release can now go through a review process to look for any issues
- Change the draft to a published release
- Celebrate 🍻
Summary
- Create a github action to build the release artifacts
- Change the project's version to be pulled from the
- Document the process in
CONTRIBUTING.md