bazel-contrib / setup-bazel

GitHub Action to configure Bazel
MIT License
34 stars 7 forks source link

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

- uses: bazel-contrib/setup-bazel@0.9.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 downloads based on contents of a .bazelversion file.

Default false.

bazelisk-version

bazelisk version to download and use.

Supports semver specification and ranges. Leave empty to use pre-installed Bazelisk.

Default "".

Examples #### Install Bazelisk 1.x ```yaml - uses: bazel-contrib/setup-bazel@0.9.0 with: bazelisk-version: 1.x ``` #### Install exact Bazelisk version ```yaml - uses: bazel-contrib/setup-bazel@0.9.0 with: bazelisk-version: 1.19.0 ```

bazelrc

Extra contents to write to a user's bazelrc file.

You can use multiline YAML strings.

Default "".

Examples #### Enable Bzlmod ```yaml - uses: bazel-contrib/setup-bazel@0.9.0 with: bazelrc: common --enable_bzlmod ``` #### Add colors and timestamps ```yaml - uses: bazel-contrib/setup-bazel@0.9.0 with: bazelrc: | build --color=yes build --show_timestamps ```

disk-cache

Enable disk_cache 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.9.0 with: disk-cache: true ``` #### Separate disk caches between workflows ```yaml - uses: bazel-contrib/setup-bazel@0.9.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.9.0 with: external-cache: true ``` #### Cache NPM repositories based on `package-lock.json` contents ```yaml - uses: bazel-contrib/setup-bazel@0.9.0 with: external-cache: | manifest: npm: package-lock.json ``` #### Do not cache Ruby on Windows ```yaml - uses: bazel-contrib/setup-bazel@0.9.0 with: external-cache: | manifest: ruby: ${{ runner.os == 'Windows' && 'false' || 'true' }} ```

google-credentials

Google Cloud account key to use for remote caching authentication.

Default "".

Examples #### Authenticate via key ```yaml - uses: bazel-contrib/setup-bazel@0.9.0 with: google-credentials: ${{ secrets.GOOGLE_CLOUD_KEY }} ```

repository-cache

Enable repository_cache 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.9.0 with: repository-cache: true ``` #### Store a repository cache from a custom location ```yaml - uses: bazel-contrib/setup-bazel@0.9.0 with: repository-cache: examples/gem/WORKSPACE ```

Migrating from bazelbuild/setup-bazelisk

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.

Development

To build action, run the following command:

$ npm run build

Release

Use Release workflow to cut a new release.