Closed phargogh closed 4 years ago
I've started this process by working on a couple of scripts to do some of the text processing required for this sort of automation, all written (at present) to ci/release/
. Next steps are to figure out how to create a new release object in the repository via the github api during an actions run.
I've added a script to ci/release
/tag-github-repo.py` to tag a target github repository.
The best thing to do at this point will be to work up a prototype on a sample repository on my own account. This prototype should have two workflows:
master
.master
are failing.I'm currently having some challenges with ensuring that builds happen under the following circumstances:
Right now there's also a complication which is that pushing tags also counts as a push. Is this incorrect? Unlike with mercurial (where making a tag also makes a new commit), pushing a tag will also trigger a rebuild and retest.
Oh that's tricky. Yea I believe Git treats tags like branches basically, so you have to push them to the remote server like you would a local branch.
@dcdenu4 it makes sense given how git works! But it's still a little strange to rebuild things for the same commit (just with a different version number).
This is coming along! I've gotten the release-object and binaries automation up and running in my fork, but there's still some extra work to be done to streamline what is currently working.
master
, we should not create a release, and we should instead send an alert to our slack channel notifying us that the build could not happen and why.master
and PRed into the release branch.)Before I leave this for the weekend, just making notes on where things were left off. Remaining tasks are:
hub
CLI (which github actions plays very, very nicely with, btw), and so the python scripts I originally wrote for this can be mostly replaced with a little shell scripting, rendering the python scripts unnecessary.feature/automated-releases
to make sure that the scheduled part of this works as expected.pandoc
or something similar to convert RST in HISTORY to MD for the text of releases.master
into each release branch once a new release object has been created.It turns out that you cannot have events authenticated with $GITHUB_TOKEN trigger other events (see https://help.github.com/en/actions/reference/events-that-trigger-workflows). If we want to be able to trigger other events, it must be authenticated with a personal access token. There are a couple of possible ways that we could move forward from this
Somewhat interestingly, these two options are not mutually exclusive. Let's say master
is in a state where the full release automation won't do an automated release (like when tests are failing on master
). We could still follow a few steps by hand to have the same effect:
master
master
, create a release object with the appropriate text derived from HISTORY (and converted to Markdown, such as via pandoc
).ref
. And because actions will be building at a ref
, the files will be uploaded to the release object.Currently pending #83
We now have an InVEST automated release process. I'll close this issue and instead work on improving the existing process.
The InVEST release process has been quite manual (documented here: https://bitbucket.org/natcap/invest/wiki/Release Checklist) and pretty involved, requiring a nontrivial amount of engineering time to become confident in our releases before we send it out.
In short, it would be a fantastic improvement to our team productivity if we could design a process that:
Other related questions we’ll want to consider are: