2023-12-31 11:05:12 +08:00
|
|
|
# ~~ 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 }}
|
2023-12-31 11:18:19 +08:00
|
|
|
- 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
|
2023-12-31 11:05:12 +08:00
|
|
|
- name: Install dependencies
|
2023-12-31 11:18:19 +08:00
|
|
|
run: pnpm i --no-frozen-lockfile
|
2023-12-31 11:05:12 +08:00
|
|
|
- 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
|