| name: 'Cross-compile protoc' |
| description: 'Produces a cross-compiled protoc binary for a target architecture' |
| inputs: |
| credentials: |
| required: true |
| description: The GCP credentials to use for reading the docker image |
| type: string |
| architecture: |
| required: true |
| description: The target architecture to build for |
| type: string |
| outputs: |
| protoc: |
| description: "Cross-compiled protoc location. Also output to $PROTOC" |
| value: ${{ steps.output.outputs.protoc }} |
| |
| runs: |
| using: 'composite' |
| steps: |
| - name: Cross compile protoc for ${{ inputs.architecture }} |
| uses: ./.github/actions/bazel-docker |
| with: |
| credentials: ${{ inputs.credentials }} |
| bazel-cache: xcompile-protoc/${{ inputs.architecture }} |
| bash: | |
| bazel build //:protoc --config=${{ inputs.architecture }} $BAZEL_FLAGS |
| cp bazel-bin/protoc . |
| |
| - name: Set protoc environment variable |
| shell: bash |
| run: echo "PROTOC=protoc-${{ inputs.architecture }}" >> $GITHUB_ENV |
| |
| - name: Extract binary |
| id: output |
| shell: bash |
| run: | |
| mv protoc $PROTOC |
| echo "protoc=$PROTOC" >> $GITHUB_OUTPUT |