anchore / syft

CLI tool and library for generating a Software Bill of Materials from container images and filesystems
Apache License 2.0
6.18k stars 570 forks source link

Improvements to the release process #519

Open wagoodman opened 3 years ago

wagoodman commented 3 years ago

Today we have a release process that is relatively simple: push a tag, a team member needs to approve, the pipeline runs, and there is a draft release ready for someone to manually publish. In about 20 minutes you could go from "need to release" to "release is published" state. That being said, there are still some frictions here, I'll highlight a few that come to mind for me:

Some of these frictions hint at changes we can make, but this also good time to look for opportunities to improve the release process as a whole.

Feel free to add on frictions you've noticed or opportunities we should consider.

spiffcs commented 3 years ago

It also looks like we can update how we're using the seucrity scan action:

--
1 issue was detected with this workflow: git checkout HEAD^2 is no longer necessary. 
Please remove this step as Code Scanning recommends analyzing the merge commit for best results.
 
luhring commented 3 years ago

This is a great issue. Adding a few frictions I've seen:

wagoodman commented 2 years ago

concept branch for part of a solution https://github.com/anchore/syft/compare/refactor-release (note, this branches from the install.sh work done previously, so needs to be rebased/cleaned-up when the install.sh PR lands)

This splits up the signing and notarization, and enables a local signing workflow that can optionally be done with snapshot builds. No additional artifacts are created from the signing step (no dmg or zip with a notarization ticket included).

jonasagx commented 2 years ago

Great issue. Adding an item to the list:

jonasagx commented 2 years ago

From refinement. Possible approaches:

Update: we're doing at least this so that the release cannot be in a broken state for this reason again (easily):

wagoodman commented 2 years ago

Good final state (summarizing from refinement conversation):

When someone wants to cut a release... They would head into the github releases page and find the current open draft release (there should always be one that is continually updated... just like the github actions repos we have today). They would update the release notes making any manual changes they would like before clicking "publish". They would also be responsible for validating and correcting the version.

What impacts does this have?

Questions:

wagoodman commented 2 years ago

In between solution: Add a make target that facilitates cutting a release for someone. It would:

This is not nearly as much work as the final state but is an improvement for some of the frictions today.