| 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 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 |
| shell: bash |
| run: echo "BAZEL_FLAGS=$BAZEL_FLAGS --enable_runfiles" >> $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 |