https://github.com/bazel-contrib/setup-bazel
GitHub Action to configure Bazel
https://github.com/bazel-contrib/setup-bazel
Last synced: 6 months ago
JSON representation
GitHub Action to configure Bazel
- Host: GitHub
- URL: https://github.com/bazel-contrib/setup-bazel
- Owner: bazel-contrib
- License: mit
- Created: 2023-01-05T00:27:56.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2025-06-28T15:04:28.000Z (7 months ago)
- Last Synced: 2025-07-01T06:11:33.506Z (7 months ago)
- Language: JavaScript
- Size: 14.4 MB
- Stars: 68
- Watchers: 3
- Forks: 16
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- stars - bazel-contrib/setup-bazel - GitHub Action to configure Bazel \[*MIT License*\] (⭐️76) (JavaScript)
README
# setup-bazel
This action allows to properly configure Bazelisk and Bazel on all operating systems
and provides an advanced fine-grained caching to improve workflows performance.
## Usage
```yaml
- uses: bazel-contrib/setup-bazel@0.15.0
with:
# Avoid downloading Bazel every time.
bazelisk-cache: true
# Store build cache per workflow.
disk-cache: ${{ github.workflow }}
# Share repository cache between workflows.
repository-cache: true
```
## Inputs
### `bazelisk-cache`
Cache [`bazelisk`][1] downloads based on contents of a `.bazelversion` file.
Default `false`.
### `bazelisk-version`
[`bazelisk`][1] version to download and use.
Supports semver specification and ranges.
Leave empty to use [pre-installed Bazelisk][8].
Default `""`.
Examples
#### Install Bazelisk 1.x
```yaml
- uses: bazel-contrib/setup-bazel@0.15.0
with:
bazelisk-version: 1.x
```
#### Install exact Bazelisk version
```yaml
- uses: bazel-contrib/setup-bazel@0.15.0
with:
bazelisk-version: 1.19.0
```
### `bazelrc`
Extra contents to write to a user's [`bazelrc`][4] file.
You can use multiline YAML strings.
Default `""`.
Examples
#### Enable Bzlmod
```yaml
- uses: bazel-contrib/setup-bazel@0.15.0
with:
bazelrc: common --enable_bzlmod
```
#### Add colors and timestamps
```yaml
- uses: bazel-contrib/setup-bazel@0.15.0
with:
bazelrc: |
build --color=yes
build --show_timestamps
```
### `disk-cache`
Enable [`disk_cache`][2] and store it on GitHub based on contents of `BUILD` files.
You can also pass a string to use as a cache key to separate caches from different workflows.
Default `false`.
Examples
#### Share a single disk cache
```yaml
- uses: bazel-contrib/setup-bazel@0.15.0
with:
disk-cache: true
```
#### Separate disk caches between workflows
```yaml
- uses: bazel-contrib/setup-bazel@0.15.0
with:
disk-cache: ${{ github.workflow }}}
```
### `external-cache`
Cache `external/` repositories based on contents of `MODULE.bazel` and `WORKSPACE` files.
Only repositories exceeding 10MB are being cached.
Each repository is stored in a separate cache.
You can also pass a `manifest` object where key is the name of the external repository
and value is a file (or list of files) which contents are used to calculate cache key.
If the value is `false`, the external repository won't be cached.
Default `false`.
Examples
#### Enable external repositories caches
```yaml
- uses: bazel-contrib/setup-bazel@0.15.0
with:
external-cache: true
```
#### Cache NPM repositories based on `package-lock.json` contents
```yaml
- uses: bazel-contrib/setup-bazel@0.15.0
with:
external-cache: |
manifest:
npm: package-lock.json
```
#### Do not cache Ruby on Windows
```yaml
- uses: bazel-contrib/setup-bazel@0.15.0
with:
external-cache: |
manifest:
ruby: ${{ runner.os == 'Windows' && 'false' || 'true' }}
```
### `google-credentials`
Google Cloud account key to use for [remote caching authentication][9].
Default `""`.
Examples
#### Authenticate via key
```yaml
- uses: bazel-contrib/setup-bazel@0.15.0
with:
google-credentials: ${{ secrets.GOOGLE_CLOUD_KEY }}
```
### `module-root`
Bazel module root directory, where `MODULE.bazel` and `WORKSPACE` is found.
Change this value to the module root if it's not the repository root.
Default `"."`.
### `output-base`
Change Bazel output base directory.
You might want to change it when running on self-hosted runners with a custom directory layout.
Default is one of the following:
- `$HOME/.bazel` on Linux and macOS
- `D:/_bazel` on Windows
Examples
#### Use `C` drive letter
```yaml
- uses: bazel-contrib/setup-bazel@0.15.0
with:
output-base: C:/_bazel
```
### `repository-cache`
Enable [`repository_cache`][3] and store it on GitHub based on contents of `MODULE.bazel` and `WORKSPACE` files.
You can also pass a file (or list of files) which contents are used to calculate cache key.
Default `false`.
Examples
#### Store a single repository cache
```yaml
- uses: bazel-contrib/setup-bazel@0.15.0
with:
repository-cache: true
```
#### Store a repository cache from a custom location
```yaml
- uses: bazel-contrib/setup-bazel@0.15.0
with:
repository-cache: examples/gem/WORKSPACE
```
## Migrating from [`bazelbuild/setup-bazelisk`][6]
You can simply replace `bazelbuild/setup-bazelisk` action with `bazel-contrib/setup-bazel`.
However, if you used a `bazel-version` input before, you will need to remove it in favor
[other ways to specify Bazel version][7].
## Development
To build action, run the following command:
```sh
$ npm run build
```
## Release
Use [Release][10] workflow to cut a new release.
[1]: https://github.com/bazelbuild/bazelisk
[2]: https://bazel.build/remote/caching#disk-cache
[3]: https://docs-staging.bazel.build/2338/versions/main/guide.html#the-repository-cache
[4]: https://bazel.build/run/bazelrc
[5]: https://docs.github.com/en/actions/learn-github-actions/contexts#github-context
[6]: https://github.com/bazelbuild/setup-bazelisk
[7]: https://github.com/bazelbuild/bazelisk/blob/master/README.md#how-does-bazelisk-know-which-bazel-version-to-run
[8]: https://github.com/actions/runner-images/pull/490
[9]: https://bazel.build/reference/command-line-reference#flag--google_credentials
[10]: https://github.com/bazel-contrib/setup-bazel/actions/workflows/release.yml