lowRISC / lowRISC/opentitan

[release] Add Bazel release process to CI

Open
#15,007 0 comments 0 reactions 1 assignee Claimed by @milesdai View on GitHub
Component:CI Component:Tooling Priority:P2 SW:Build System
Dominant language
SystemVerilog
Stars
3.6k
Forks
1.1k
Avg merge
2d 22h
Merged PRs (30d)
141

Description

#13894 and #13899 introduce a Bazel mechanism to create a release archive and post that archive to Github as an official release. We would like to use this feature in CI to create a regular release.

~~In our current CI setup, the artifacts to be included in the release are generated on separate runners. We don't currently have a good way to share these artifacts between agents in a way that Bazel recognizes. Since the release process will only run on master, we may be able to make use of the remote cache instead of the action cache. The only remaining issue is that due to #14695, we have sharded the remote cache using the OS-version since some of our CI runners have not yet been upgraded from Ubuntu-18.04 to Ubuntu-20.04. Therefore, we need to do the following before fully integrating the release mechanism:~~

Due to difficulties in gradually integrating the release mechanism, we will pursue a different integration strategy. To bypass the issues surrounding sharing build artifacts between machines, the release build will be performed from scratch on a nightly basis (initially) on a single ci-public machine. This removes the dependency on upgrading the ci runners to the same Ubuntu version and circumvents all the difficulty surrounding sharing artifacts between build stages. The revised plan is as follows:

- [x] Build all release artifacts with Bazel in CI (bitstream generation and splicing) (#14962)
- [x] Add a separate CI cron job pipeline to build the release artifacts from scratch (#16682, #16730)
- [ ] Replace the `release` directory with the [`bazel-release` package](https://github.com/lowRISC/bazel-release)
- [x] ~~Modify the `bazel run //release` rule to allow usage of the Github CLI without user interaction~~ (Due to limitations on authentication options for the CLI, we are currently planning to use the [`GithubReleases@1`](https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/github-release-v1?view=azure-pipelines) Azure task instead)
- [ ] Authenticate Azure Pipelines to Github to allow Azure to create releases (#17123)
- [ ] Once the CI setup is stable, create official releases at the desired cadence

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.