--- a +++ b/.github/workflows/update-external-studies.yml @@ -0,0 +1,55 @@ +--- +name: "Create PR to update `external_studies` test code" + +on: + workflow_dispatch: + # Once a week on Sunday afternoon + schedule: + - cron: "21 17 * * 0" + +jobs: + create_external_studies_pr: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - uses: opensafely-core/setup-action@v1 + with: + install-just: true + python-version: "3.11" + + - name: Update vendored copies of external study code + run: just update-external-studies + + # These are problematic (in particular the flake8 hook doesn't respect + # the `.flake8` config file) and unnecessary as all the checks will get + # run on the PR anyway + - name: Disable pre-commit hooks + run: git config core.hooksPath /dev/null + + - name: Generate app token + uses: actions/create-github-app-token@v1 + id: generate-token + with: + app-id: 1031449 # opensafely-core Create PR app + private-key: ${{ secrets.CREATE_PR_APP_PRIVATE_KEY }} + + - name: Create a Pull Request if there are any changes + id: create_pr + uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8 + with: + add-paths: tests/acceptance/external_studies/* + branch: bot/update-external-studies + base: main + author: "opensafely-github-bot <opensafely-github-bot@users.noreply.github.com>" + committer: "opensafely-github-bot <opensafely-github-bot@users.noreply.github.com>" + commit-message: "chore: Update `external_studies` test code" + title: "Update `external_studies` test code" + token: ${{ steps.generate-token.outputs.token }} + + # The PR will still require manual approval, this just reduces it to a one-click process + - name: Enable automerge + if: steps.create_pr.outputs.pull-request-operation == 'created' + run: gh pr merge --auto --squash ${{ steps.create_pr.outputs.pull-request-number }} + env: + GH_TOKEN: ${{ steps.generate-token.outputs.token }}