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 }}