Closed phargogh closed 4 years ago
Working on this in my fork on task/144-minor-updates-to-bugfix-automation
The software team should be in charge of deciding whether and when to do a release. When we decide a release should take place, automation should be in place to make everything happen as expected.
The automation workflow should have a few pause points, opportunities to decide whether a release should proceed.
When we decide to initiate a release, the release manager will run a script locally to initiate the release process.
Assumptions:
ref
that the local repo is checked out to will be used as the base for the autorelease/3.x.x
branch that the script will create.Invocation: ./scripts/release-1-initiate.sh <version>
What the script will do:
python
for sure, but also any others needed)<version>
tag does not already existHISTORY.rst
for the releaseOnce the script has finished, it'll be up to the user to commit these changes, but we can provide helpful git commands in ./scripts/release-2-commit.sh <version>
to:
ref
, autorelease/<version>
Makefile
, HISTORY.rst
for the release.natcap/invest
. We don't want to actually push because we might realize that actually there should have been other files committed, or we got the version wrong, or something like that.When the changes are pushed, the push should then trigger a new build of the tagged revision. Artifacts will be published to GCS.
Assumptions:
Invocation: ./scripts/release-3-publish.sh <version>
What the script will do:
pandoc
, twine
, gsutil
, hub
for sure)natcap/invest
repo based on the text of HISTORY.rst
for this releaseautorelease/*
branch used into master
and assign it to the release manager.I think we're all good to go on this at the moment!
In recent discussions, we've decided to make a few minor changes to how release automation operates:
HISTORY.rst
as a proxy. If there are no user-facing changes, a release should not be triggered.github-actions
, it means that the PR last submitted was an automated PR and it should instead be assigned to$RELEASE_MANAGER
. See example failed build: https://github.com/natcap/invest/pull/164/checks?check_run_id=743226968$RELEASE_MANAGER
across multiple workflows, let's find a way to have that defined in a single place.pandoc
can convert correctly. The 3.8.4 release text was not formatted correctly when converted to Markdown. Related to #1331 week updates is too frequent. We'll move this to every other week.There does not seem to be an obvious way to do this.