# Copyright 2022 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. on: pull_request: name: auto-merge-readme jobs: approve: runs-on: ubuntu-latest if: github.repository_owner == 'googleapis' && github.head_ref == 'autosynth-readme' steps: - uses: actions/github-script@v6 with: github-token: ${{secrets.YOSHI_APPROVER_TOKEN}} script: | // only approve PRs from yoshi-automation if (context.payload.pull_request.user.login !== "yoshi-automation") { return; } // only approve PRs like "chore: release <release version>" if (!context.payload.pull_request.title === "chore: regenerate README") { return; } // only approve PRs with README.md and synth.metadata changes const files = new Set( ( await github.paginate( github.pulls.listFiles.endpoint({ owner: context.repo.owner, repo: context.repo.repo, pull_number: context.payload.pull_request.number, }) ) ).map(file => file.filename) ); if (files.size != 2 || !files.has("README.md") || !files.has(".github/readme/synth.metadata/synth.metadata")) { return; } // approve README regeneration PR await github.pulls.createReview({ owner: context.repo.owner, repo: context.repo.repo, body: 'Rubber stamped PR!', pull_number: context.payload.pull_request.number, event: 'APPROVE' }); // attach automerge label await github.issues.addLabels({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.payload.pull_request.number, labels: ['automerge'] });