From fde4f8a9c537558fc2324256e8609fb51a7383fa Mon Sep 17 00:00:00 2001 From: Victor Vargas Date: Mon, 13 Jan 2025 12:49:34 +0100 Subject: [PATCH] Added precommit workflow for PRs --- .github/workflows/pr_precommit.yml | 65 ++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 .github/workflows/pr_precommit.yml diff --git a/.github/workflows/pr_precommit.yml b/.github/workflows/pr_precommit.yml new file mode 100644 index 0000000..d47c5ea --- /dev/null +++ b/.github/workflows/pr_precommit.yml @@ -0,0 +1,65 @@ +name: PR pre-commit + +on: + push: + branches: + - main + pull_request_target: + branches: + - main + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} + cancel-in-progress: true + +jobs: + pre-commit: + runs-on: ubuntu-24.04 + + steps: + - name: Create app token + uses: actions/create-github-app-token@v1 + id: app-token + with: + app-id: ${{ vars.PR_APP_ID }} + private-key: ${{ secrets.PR_APP_KEY }} + + - name: Checkout + uses: actions/checkout@v4 + with: + repository: ${{ github.event.pull_request.head.repo.full_name }} + ref: ${{ github.head_ref }} + token: ${{ steps.app-token.outputs.token }} + + - name: Setup Python 3.10 + uses: actions/setup-python@v5 + with: + python-version: "3.10" + + - name: Get changed files + uses: tj-actions/changed-files@v45 + id: changed-files + + - name: List changed files + run: echo '${{ steps.changed-files.outputs.all_changed_files }}' + + # only check the full repository if PR and correctly labelled + - if: ${{ github.event_name != 'pull_request_target' || contains(github.event.pull_request.labels.*.name, 'full pre-commit') }} + name: Full pre-commit + uses: pre-commit/action@v3.0.1 + with: + extra_args: --all-files + - if: ${{ github.event_name == 'pull_request_target' && !contains(github.event.pull_request.labels.*.name, 'full pre-commit') }} + name: Local pre-commit + uses: pre-commit/action@v3.0.1 + with: + extra_args: --files ${{ steps.changed-files.outputs.all_changed_files }} + + # push fixes if pre-commit fails and PR is eligible + - if: ${{ failure() && github.event_name == 'pull_request_target' && !github.event.pull_request.draft && !contains(github.event.pull_request.labels.*.name, 'stop pre-commit fixes') }} + name: Push pre-commit fixes + uses: stefanzweifel/git-auto-commit-action@v5 + with: + commit_message: Automatic `pre-commit` fixes + commit_user_name: ayrna-actions-bot[bot] + create_branch: false