2023-03-20 11:05:08 -04:00
|
|
|
name: Setup bazel
|
|
|
|
description: Setup Bazel for CI builds and tests
|
|
|
|
|
|
|
|
inputs:
|
|
|
|
useCache:
|
|
|
|
description: "Cache Bazel artifacts. Use 'true' to enable with rw, 'readonly' to download, and 'false' to disable."
|
|
|
|
default: "false"
|
|
|
|
required: true
|
|
|
|
buildBuddyApiKey:
|
|
|
|
description: "BuildBuddy API key for caching Bazel artifacts"
|
|
|
|
required: false
|
|
|
|
|
|
|
|
runs:
|
|
|
|
using: "composite"
|
|
|
|
steps:
|
|
|
|
- name: Check inputs
|
|
|
|
shell: bash
|
|
|
|
run: |
|
|
|
|
echo "::group::Check inputs"
|
|
|
|
if [[ "${{ inputs.useCache }}" != "true" && "${{ inputs.useCache }}" != "readonly" && "${{ inputs.useCache }}" != "false" ]]; then
|
|
|
|
echo "Invalid value for 'useCache' input: '${{ inputs.useCache }}'. Must be 'true', 'readonly', or 'false'."
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
if [[ "${{ inputs.useCache }}" == "true" || "${{ inputs.useCache }}" == "readonly" ]] && [[ -z "${{ inputs.buildBuddyApiKey }}" ]]; then
|
|
|
|
echo "BuildBuddy API key is required when cache is enabled."
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
echo "::endgroup::"
|
2023-03-21 05:06:32 -04:00
|
|
|
|
|
|
|
- name: Bazel repository cache (Linux)
|
2023-03-22 12:57:47 -04:00
|
|
|
uses: actions/cache/restore@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
|
2023-03-21 05:06:32 -04:00
|
|
|
if: runner.os == 'Linux' && (inputs.useCache == 'true' || inputs.useCache == 'readonly')
|
|
|
|
with:
|
|
|
|
path: |
|
|
|
|
${{ github.workspace }}/tools/pseudo-version
|
|
|
|
/home/runner/.cache/bazel
|
|
|
|
/home/runner/.cache/shared_bazel_repository_cache
|
|
|
|
/home/runner/.cache/shared_bazel_action_cache
|
|
|
|
/tmp/bazel-zig-cc
|
|
|
|
key: bazel
|
|
|
|
|
2023-03-20 11:05:08 -04:00
|
|
|
- name: Configure Bazel
|
|
|
|
shell: bash
|
|
|
|
if: inputs.useCache == 'true' || inputs.useCache == 'readonly'
|
|
|
|
env:
|
|
|
|
BUILDBUDDY_ORG_API_KEY: ${{ inputs.buildBuddyApiKey }}
|
|
|
|
run: |
|
|
|
|
echo "::group::Configure Bazel"
|
|
|
|
cat <<EOF >> ~/.bazelrc
|
|
|
|
build --bes_results_url=https://app.buildbuddy.io/invocation/
|
|
|
|
build --bes_backend=grpcs://remote.buildbuddy.io
|
|
|
|
build --remote_cache=grpcs://remote.buildbuddy.io
|
|
|
|
build --remote_timeout=3600
|
|
|
|
build --experimental_remote_build_event_upload=minimal
|
|
|
|
build --experimental_remote_cache_compression
|
|
|
|
build --remote_header=x-buildbuddy-api-key=${BUILDBUDDY_ORG_API_KEY}
|
|
|
|
EOF
|
|
|
|
echo "::endgroup::"
|
2023-03-21 05:06:32 -04:00
|
|
|
|
2023-03-20 11:05:08 -04:00
|
|
|
- name: Configure Bazel (readonly)
|
|
|
|
shell: bash
|
|
|
|
if: inputs.useCache == 'readonly'
|
|
|
|
run: |
|
|
|
|
echo "::group::Configure Bazel (readonly)"
|
|
|
|
echo "build --remote_upload_local_results=false" >> ~/.bazelrc
|
|
|
|
echo "::endgroup::"
|
2023-03-21 05:06:32 -04:00
|
|
|
|
2023-03-20 11:05:08 -04:00
|
|
|
- name: Check bazel version
|
|
|
|
shell: bash
|
|
|
|
run: bazel version
|