diff --git a/.github/workflows/sync_approve_renovate_pr.yaml b/.github/workflows/sync_approve_renovate_pr.yaml new file mode 100644 index 0000000000..92e6775f00 --- /dev/null +++ b/.github/workflows/sync_approve_renovate_pr.yaml @@ -0,0 +1,43 @@ +name: Approve renovate lock file changes +on: + pull_request_target: + paths: + - '.github/workflows/sync_renovate-changesets.yml' + - '**/yarn.lock' + +jobs: + generate-changeset: + runs-on: ubuntu-latest + if: github.actor == 'renovate[bot]' && github.repository == 'backstage/backstage' + steps: + - name: Approve + uses: actions/github-script@v6 + with: + github-token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }} + script: | + const owner = 'backstage'; + const repo = 'backstage'; + + const date = new Date(); + if (date.getDay() === 2) { + console.log('Skipping auto approve because Tuesday is release day'); + return; + } + + const r = await octokit.rest.pulls.listFiles({ + owner, + repo, + pull_number: context.issue.number, + }); + + if (r.data.every((f) => f.filename.split('/').slice(-1)[0] === 'yarn.lock')) { + console.log('skipping approval since some files are not yarn.lock'); + return; + } + + await github.rest.pulls.createReview({ + owner, + repo, + pull_number: context.issue.number, + event: 'APPROVE' + })