Skip to content

chore: secure hermetic_library_generation workflow #46

chore: secure hermetic_library_generation workflow

chore: secure hermetic_library_generation workflow #46

# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# GitHub action job to test core java library features on
# downstream client libraries before they are released.
name: Hermetic library generation upon generation config change through pull requests
on:
pull_request:
env:
HEAD_REF: ${{ github.head_ref }}
REPO_FULL_NAME: ${{ github.event.pull_request.head.repo.full_name }}
jobs:
# This step is meant to inline the jobs.if of the next step "library_generation" as
# an env var to avoid injection vulnerabilities.
# Unfortunately, we can't directly reference `env` in jobs.if
# (see https://github.com/actions/runner/issues/2372)
# The chosen workaround is to declare an intermediate step that will output the env var
prepare-repo-full-name:
name: Prepare REPO_FULL_NAME env var
runs-on: ubuntu-latest
outputs:
REPO_FULL_NAME: ${{ env.REPO_FULL_NAME }}
steps:
- run: echo "" >> /dev/null # no op - we just need to declare the env var as output
library_generation:
# skip pull requests coming from a forked repository
if: needs.prepare-repo-full-name.outputs.REPO_FULL_NAME == github.repository
needs: [prepare-repo-full-name]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }}
- name: Generate changed libraries
shell: bash
run: |
set -ex
[ -z "$(git config user.email)" ] && git config --global user.email "[email protected]"
[ -z "$(git config user.name)" ] && git config --global user.name "cloud-java-bot"
bash .github/scripts/hermetic_library_generation.sh \
--target_branch ${{ github.base_ref }} \
--current_branch $HEAD_REF
env:
GH_TOKEN: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }}