feat: automate dist recompilation on Renovate PRs and configure concurrency limit

This commit is contained in:
2026-09-04 22:29:31 +02:00
parent 7c5cb5ffec
commit 00e2484118
6 changed files with 125 additions and 16 deletions
+53
View File
@@ -0,0 +1,53 @@
name: Recompile dist/ on Renovate PR
on:
pull_request:
types: [opened, synchronize]
paths:
- package.json
- pnpm-lock.yaml
- index.js
- monitor.js
permissions:
contents: write
jobs:
recompile:
runs-on: pi
if: |
(github.actor == 'renovate[bot]' || contains(github.head_ref, 'renovate/')) &&
!contains(github.event.head_commit.message, '[skip compile]')
steps:
- name: Checkout PR Branch
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.head_ref }}
fetch-depth: 0
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: '20'
- uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10
- name: Clean Install
run: pnpm install --frozen-lockfile --ignore-scripts
shell: bash
- name: Build
run: pnpm run build
shell: bash
- name: Commit dist/
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add dist/
if git diff --staged --quiet; then
echo "No changes to dist/"
else
git commit -m "chore: compile action bundle [skip compile]"
git push origin HEAD:${{ github.head_ref }}
fi
shell: bash
+1
View File
@@ -2,6 +2,7 @@ name: Test
on: on:
push: push:
pull_request:
workflow_dispatch: workflow_dispatch:
jobs: jobs:
+63
View File
@@ -0,0 +1,63 @@
name: Recompile dist/ on Renovate PR
on:
pull_request:
types: [opened, synchronize]
paths:
- package.json
- pnpm-lock.yaml
- index.js
- monitor.js
permissions:
contents: write
jobs:
recompile:
# 1. Only run for Renovate branches
# 2. Never run if the last commit was already our automated build commit
if: |
(github.actor == 'renovate[bot]' || contains(github.head_ref, 'renovate/')) &&
!startsWith(github.event.pull_request.head.label, 'recompile-dist') &&
!contains(github.event.head_commit.message, '[skip compile]')
runs-on: ubuntu-latest
steps:
- name: Generate App Token
id: app-token
if: ${{ env.RECOMPILE_APP_ID != '' }}
uses: actions/create-github-app-token@v1
with:
app-id: ${{ secrets.RECOMPILE_APP_ID }}
private-key: ${{ secrets.RECOMPILE_APP_PRIVATE_KEY }}
env:
RECOMPILE_APP_ID: ${{ secrets.RECOMPILE_APP_ID }}
- name: Checkout PR Branch
uses: actions/checkout@v4
with:
token: ${{ steps.app-token.outputs.token || github.token }}
ref: ${{ github.head_ref }}
fetch-depth: 0
- uses: pnpm/action-setup@v3
with:
version: 9
- uses: actions/setup-node@v4
with:
node-version: 20
cache: pnpm
- name: Clean Install (No Lifecycle Scripts)
run: pnpm install --frozen-lockfile --ignore-scripts
- name: Build
run: pnpm run build
- name: Commit dist/
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_user_name: github-actions[bot]
commit_user_email: github-actions[bot]@users.noreply.github.com
commit_message: 'chore: compile action bundle [skip compile]'
file_pattern: dist/*
+1
View File
@@ -7,6 +7,7 @@ This repository is maintained by Gemini.
* **Test-Driven Development (TDD):** Wherever possible, Test-Driven Development principles should be followed. Write tests before writing the code they are intended to validate. * **Test-Driven Development (TDD):** Wherever possible, Test-Driven Development principles should be followed. Write tests before writing the code they are intended to validate.
* **Pre-commit Hooks:** Ensure that `pre-commit` hooks are installed and active before making any commits. This can be done by running `pre-commit install` in your local repository. * **Pre-commit Hooks:** Ensure that `pre-commit` hooks are installed and active before making any commits. This can be done by running `pre-commit install` in your local repository.
* **Note for Gemini:** Git commits trigger pre-commit hooks, which can take several seconds (or minutes) to complete. Checking the command status for git commit is only appropriate every 120s. * **Note for Gemini:** Git commits trigger pre-commit hooks, which can take several seconds (or minutes) to complete. Checking the command status for git commit is only appropriate every 120s.
* **Package Manager Preferences:** Always use `pnpm` and `pnpx`. Never use `npm` or `npx` under any circumstances. All package management operations, script runs, and tool invocations must use `pnpm` / `pnpx`.
## Repository Comparison ## Repository Comparison
+1 -1
View File
@@ -1,4 +1,4 @@
import { vi, describe, it, expect, beforeEach } from "vitest"; import { vi, describe, it, expect, beforeEach, afterEach } from "vitest";
// Mock @actions/core for all tests in this file // Mock @actions/core for all tests in this file
vi.mock("@actions/core", () => ({ vi.mock("@actions/core", () => ({
+6 -15
View File
@@ -5,20 +5,11 @@
"config:recommended", "config:recommended",
":automergeLinters" ":automergeLinters"
], ],
"packageRules": [ "rebaseWhen": "behind-base-branch",
{ "branchConcurrentLimit": 2,
"matchManagers": [ "prConcurrentLimit": 2,
"pnpm" "gitIgnoredAuthors": [
], "github-actions[bot]@users.noreply.github.com",
"postUpgradeTasks": { "bot@horstenkamp.eu"
"commands": [
"pnpm install --frozen-lockfile",
"pnpm run build"
],
"fileFilters": [
"dist/index.js"
]
}
}
] ]
} }