carbon-language / carbon-lang

Carbon Language's main repository: documents, design, implementation, and related tools. (NOTE: Carbon Language is experimental; see README)
https://github.com/carbon-language/carbon-lang/blob/trunk/README.md
Other
32.31k stars 1.48k forks source link

Add automated nightly builds, uploaded as pre-releases. #4055

Closed chandlerc closed 1 week ago

chandlerc commented 1 week ago

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 our action-test branch: https://github.com/carbon-language/carbon-lang/actions/runs/9545546278

Also 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-6a85cdce7b3a784a2e6b

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.