There is still a lot more we should try to do here, but this gets us
a decent start and should be enough for some of the developers working
on Carbon to use for simple cases, or tools like Compiler Explorer.
This first factors most of the complex setup for our CI workflow into
local actions that we can reuse in other workflows. It's actually
a fairly nice cleanup I think even without the specific use case of
a nightly release process. These use "composite" actions which is the
cleanest model for factoring out a subsequence of steps from a workflow.
I've tried to keep the inputs fairly minimal and easy to spot.
Next, it adds a cron-scheduled action that builds and creates a nightly
release. It also supports explicitly running the workflow, which can be
useful if the nightly release is broken in some way: a fix can be landed
and then a force run used.
Note that the GitHub releases are easily deleted, and even the tags
created in the repository can be cleaned up as needed so it should be
fairly harmless to fix this forward if needed.
There is still a lot more we should try to do here, but this gets us a decent start and should be enough for some of the developers working on Carbon to use for simple cases, or tools like Compiler Explorer.
This first factors most of the complex setup for our CI workflow into local actions that we can reuse in other workflows. It's actually a fairly nice cleanup I think even without the specific use case of a nightly release process. These use "composite" actions which is the cleanest model for factoring out a subsequence of steps from a workflow. I've tried to keep the inputs fairly minimal and easy to spot.
Next, it adds a cron-scheduled action that builds and creates a nightly release. It also supports explicitly running the workflow, which can be useful if the nightly release is broken in some way: a fix can be landed and then a force run used.
Tested the
tests
workflow using ouraction-test
branch: https://github.com/carbon-language/carbon-lang/actions/runs/9545546278Also tested the nightly release action by hacking in a
push
trigger and using draft release. If you have admin rights, you can see an example draft nightly build here: https://github.com/carbon-language/carbon-lang/releases/tag/untagged-6a85cdce7b3a784a2e6bNote that the GitHub releases are easily deleted, and even the tags created in the repository can be cleaned up as needed so it should be fairly harmless to fix this forward if needed.