blob: 0ef5d5a2266ac022c4def60dbef673f87b18068f [file] [log] [blame]
name: Setup Bazel
description: Setup a Bazel environment for Protobuf CI testing
inputs:
credentials-file:
required: true
description: The GCP credentials file to use for caching
type: string
bazel-cache:
required: true
description: A unique path for the Bazel cache.
type: string
outputs:
bazel-flags:
description: Bazel flags that should be sent to all Bazel invocations
value: ${{ steps.output.outputs.bazel-flags }}
bazel-startup-flags:
description: Bazel startup flags that should be sent to all Bazel invocations
value: ${{ steps.output.outputs.bazel-startup-flags }}
runs:
using: 'composite'
steps:
- name: Initialize BAZEL environment variable
shell: bash
run: echo "BAZEL=bazelisk" >> $GITHUB_ENV
- name: Initialize Windows startup flags
if: runner.os == 'Windows'
shell: bash
run: echo "BAZEL_STARTUP_FLAGS=--output_user_root=C:/tmp --windows_enable_symlinks" >> $GITHUB_ENV
- name: Initialize Bazel flags
shell: bash
run: echo "BAZEL_FLAGS=--keep_going --test_output=errors --test_timeout=600" >> $GITHUB_ENV
- name: Initialize Windows-specific Bazel flags
if: runner.os == 'Windows'
shell: bash
run: echo "BAZEL_FLAGS=$BAZEL_FLAGS --enable_runfiles" >> $GITHUB_ENV
- name: Initialize MacOS-specific Bazel flags
if: runner.os == 'macOS'
shell: bash
run: |
echo "BAZEL_FLAGS=$BAZEL_FLAGS --xcode_version_config=//.github:host_xcodes" >> $GITHUB_ENV
echo "DEVELOPER_DIR=${{ env.DEVELOPER_DIR || '/Applications/Xcode_14.1.app/Contents/Developer' }}" >> $GITHUB_ENV
- name: Configure Bazel caching
# Skip bazel cache for local act runs due to issue with credential files
# and nested docker images
if: ${{ inputs.bazel-cache && !github.event.act_local_test }}
shell: bash
run: >-
echo "BAZEL_FLAGS=$BAZEL_FLAGS
--google_credentials=${{ inputs.credentials-file }}
--remote_cache=https://storage.googleapis.com/protobuf-bazel-cache/protobuf/gha/${{ inputs.bazel-cache }}" >> $GITHUB_ENV
- name: Configure Bazel cache writing
# External runs should never write to our caches.
if: ${{ github.event_name != 'pull_request_target' && inputs.bazel-cache && !github.event.act_local_test }}
shell: bash
run: echo "BAZEL_FLAGS=$BAZEL_FLAGS --remote_upload_local_results" >> $GITHUB_ENV
- name: Output Bazel flags
id: output
shell: bash
run: |
echo "bazel-flags=$BAZEL_FLAGS" >> $GITHUB_OUTPUT
echo "bazel-startup-flags=$BAZEL_STARTUP_FLAGS" >> $GITHUB_OUTPUT
- name: Restore Bazel repository cache
uses: ./.github/actions/internal/repository-cache-restore
with:
bazel-cache: ${{ inputs.bazel-cache }}