Add PR templates, CI workflows, and release drafter config files

This commit is contained in:
Fabián Gonzalo Artur de la Villarmois
2026-03-29 19:46:34 +13:00
parent d0531fee49
commit 97024acef1
6 changed files with 183 additions and 1 deletions
+43
View File
@@ -0,0 +1,43 @@
name: Populate PR commits
on:
pull_request:
types: [opened, synchronize]
jobs:
update-body:
name: Inject commit list into PR body
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- uses: actions/github-script@v7
with:
script: |
const { data: commits } = await github.rest.pulls.listCommits({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
});
const commitLines = commits
.map(c => `- ${c.commit.message.split('\n')[0]} (${c.sha.slice(0, 7)})`)
.join('\n');
const currentBody = context.payload.pull_request.body ?? '';
// Replace everything between the Commits header and the next ## header
const updated = currentBody.replace(
/(## Commits\n)[\s\S]*?(\n## )/,
`$1\n${commitLines}\n$2`
);
if (updated === currentBody) return;
await github.rest.pulls.update({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
body: updated,
});
+20
View File
@@ -0,0 +1,20 @@
name: Release Drafter
on:
push:
branches: [main]
pull_request:
types: [opened, reopened, synchronize]
jobs:
draft:
name: Draft next release notes
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: read
steps:
- uses: release-drafter/release-drafter@v6
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+1 -1
View File
@@ -87,7 +87,7 @@ jobs:
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name | lower }}
images: ${{ secrets.DOCKERHUB_USERNAME }}/sgs
tags: |
type=semver,pattern={{version}}
type=raw,value=latest
+38
View File
@@ -60,3 +60,41 @@ jobs:
- name: Run Pint
working-directory: www
run: ./vendor/bin/pint --test
update-checklist:
name: Update PR checklist
runs-on: ubuntu-latest
if: always() && github.event_name == 'pull_request'
needs: [test, lint]
permissions:
pull-requests: write
steps:
- uses: actions/github-script@v7
with:
script: |
const testsPass = '${{ needs.test.result }}' === 'success';
const lintPass = '${{ needs.lint.result }}' === 'success';
const check = (pass) => pass ? 'x' : ' ';
const { data: pr } = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
});
const body = (pr.body ?? '').replace(
/- \[[ x]\] Tests pass \(`php artisan test`\)/,
`- [${check(testsPass)}] Tests pass (\`php artisan test\`)`
).replace(
/- \[[ x]\] Code style passes \(`\.\/vendor\/bin\/pint --test`\)/,
`- [${check(lintPass)}] Code style passes (\`./vendor/bin/pint --test\`)`
);
await github.rest.pulls.update({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
body,
});