# ~~ Generated by projen. To modify, edit .projenrc.ts and run "npx projen". name: build on: pull_request: {} workflow_dispatch: {} jobs: build: runs-on: ubuntu-latest permissions: contents: write outputs: self_mutation_happened: ${{ steps.self_mutation.outputs.self_mutation_happened }} env: CI: "true" steps: - name: Checkout uses: actions/checkout@v3 with: ref: ${{ github.event.pull_request.head.ref }} repository: ${{ github.event.pull_request.head.repo.full_name }} - name: Setup pnpm uses: pnpm/action-setup@v2.2.4 with: version: "8" - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: 20.10.0 - name: Install dependencies run: pnpm i --no-frozen-lockfile - name: build run: npx projen build - name: Find mutations id: self_mutation run: |- git add . git diff --staged --patch --exit-code > .repo.patch || echo "self_mutation_happened=true" >> $GITHUB_OUTPUT - name: Upload patch if: steps.self_mutation.outputs.self_mutation_happened uses: actions/upload-artifact@v3 with: name: .repo.patch path: .repo.patch - name: Fail build on mutation if: steps.self_mutation.outputs.self_mutation_happened run: |- echo "::error::Files were changed during build (see build log). If this was triggered from a fork, you will need to update your branch." cat .repo.patch exit 1 self-mutation: needs: build runs-on: ubuntu-latest permissions: contents: write if: always() && needs.build.outputs.self_mutation_happened && !(github.event.pull_request.head.repo.full_name != github.repository) steps: - name: Checkout uses: actions/checkout@v3 with: token: ${{ secrets.PROJEN_GITHUB_TOKEN }} ref: ${{ github.event.pull_request.head.ref }} repository: ${{ github.event.pull_request.head.repo.full_name }} - name: Download patch uses: actions/download-artifact@v3 with: name: .repo.patch path: ${{ runner.temp }} - name: Apply patch run: '[ -s ${{ runner.temp }}/.repo.patch ] && git apply ${{ runner.temp }}/.repo.patch || echo "Empty patch. Skipping."' - name: Set git identity run: |- git config user.name "github-actions" git config user.email "github-actions@github.com" - name: Push changes env: PULL_REQUEST_REF: ${{ github.event.pull_request.head.ref }} run: |- git add . git commit -s -m "chore: self mutation" git push origin HEAD:$PULL_REQUEST_REF