diff --git a/README.md b/README.md index 9552495..8baa610 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,19 @@ 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: p0deje/setup-bazel@0.6.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` @@ -20,12 +33,56 @@ Leave empty to use [pre-installed Bazelisk][8]. Default `""`. +
+ Examples + + #### Install Bazelisk 1.x + + ```yaml + - uses: p0deje/setup-bazel@0.6.0 + with: + bazelisk-version: 1.x + ``` + + #### Install exact Bazelisk version + + ```yaml + - uses: p0deje/setup-bazel@0.6.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: p0deje/setup-bazel@0.6.0 + with: + bazelrc: common --enable_bzlmod + ``` + + #### Add colors and timestamps + + ```yaml + - uses: p0deje/setup-bazel@0.6.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. @@ -34,81 +91,95 @@ You can also pass a string to use as a cache key to separate caches from differe Default `false`. +
+ Examples + + #### Share a single disk cache + + ```yaml + - uses: p0deje/setup-bazel@0.6.0 + with: + disk-cache: true + ``` + + #### Separate disk caches between workflows + + ```yaml + - uses: p0deje/setup-bazel@0.6.0 + with: + disk-cache: ${{ github.workflow }}} + ``` +
+ ### `external-cache` Cache `external/` repositories based on contents of a `WORKSPACE` file. Only repositories exceeding 10MB are being cached. +Each repository is stored in a separate cache. -You can also pass a YAML object where key is the name of the external repository -and value is the list of files which contents are used to calculate cache key. +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: p0deje/setup-bazel@0.6.0 + with: + external-cache: true + ``` + + #### Cache NPM repositories based on `package-lock.json` contents + + ```yaml + - uses: p0deje/setup-bazel@0.6.0 + with: + external-cache: | + manifest: + npm: package-lock.json + ``` + + #### Do not cache Ruby on Windows + + ```yaml + - uses: p0deje/setup-bazel@0.6.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: p0deje/setup-bazel@0.6.0 + with: + google-credentials: ${{ secrets.GOOGLE_CLOUD_KEY }} + ``` +
+ + ### `repository-cache` Enable [`repository_cache`][3] and store it on GitHub based on contents of a `WORKSPACE` file. Default `false`. -## Examples - -### Custom Bazelisk version - -```yaml -- uses: p0deje/setup-bazel@0.6.0 - with: - bazelisk-version: 1.19.0 -``` - -### Additional `.bazelrc` options - -```yaml -- uses: p0deje/setup-bazel@0.6.0 - with: - bazelrc: | - common --color=yes - build --show_timestamps -``` - -### Full caching enabled - -```yaml -- uses: p0deje/setup-bazel@0.6.0 - with: - bazelisk-cache: true - disk-cache: true - external-cache: true - repository-cache: true -``` - -### Separate disk cache between workflows - -```yaml -- uses: p0deje/setup-bazel@0.6.0 - with: - disk-cache: ${{ github.workflow }}} -``` - -### Cache external repository based on different files - -```yaml -- uses: p0deje/setup-bazel@0.6.0 - with: - external-cache: | - manifest: - npm: package-lock.json -``` - -### Disable individual external repositories conditionally - -```yaml -- uses: p0deje/setup-bazel@0.6.0 - with: - external-cache: | - manifest: - ruby: ${{ matrix.os == 'windows' && 'false' || '.ruby-version' }} -``` - ## Migrating from [`bazelbuild/setup-bazelisk`][6] You can simply replace `bazelbuild/setup-bazelisk` action with `p0deje/setup-bazel`. @@ -123,4 +194,5 @@ However, if you used a `bazel-version` input before, you will need to remove it [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 \ No newline at end of file +[8]: https://github.com/actions/runner-images/pull/490 +[9]: https://bazel.build/reference/command-line-reference#flag--google_credentials \ No newline at end of file