Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .github/renovate.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,18 @@
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["github>Boshen/renovate"],
"ignoreDeps": ["@void-sdk/void"],
"packageRules": [
{
"description": "Runtime deps are bundled into dist/index.mjs; label so the rebuild-bundle workflow refreshes dist/.",
"matchDepTypes": ["dependencies"],
"addLabels": ["needs-bundle-rebuild"]
},
{
"description": "vite-plus is the bundler; its updates can change dist/ output.",
"matchPackageNames": ["vite-plus"],
"addLabels": ["needs-bundle-rebuild"]
}
],
"customManagers": [
{
"customType": "regex",
Expand Down
67 changes: 67 additions & 0 deletions .github/workflows/rebuild-bundle.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: Rebuild action bundle

# The `needs-bundle-rebuild` label (Renovate adds it for bumps to deps compiled
# into dist/index.mjs, or to the vite-plus bundler) triggers a rebuild of the
# bundle and a push of the refreshed dist/, so the "Verify dist is up to date"
# check passes without a manual `vp run build`.
on:
pull_request:
types: [labeled]

permissions: {}

concurrency:
group: rebuild-bundle-${{ github.event.pull_request.number }}
cancel-in-progress: true

jobs:
rebuild:
name: rebuild bundle
# Only for our label, and only same-repo branches we can push back to
# (Renovate PRs are same-repo; fork PRs can't be pushed to).
if: >-
github.event.label.name == 'needs-bundle-rebuild' &&
github.event.pull_request.head.repo.full_name == github.repository
runs-on: ubuntu-latest
permissions:
contents: read
steps:
# A GitHub App token so the follow-up push re-triggers the PR's required
# checks; a push with the default GITHUB_TOKEN does not (loop prevention).
- uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
id: app-token
with:
client-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}

# Actions are pinned to a full commit SHA (org policy).
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: ${{ github.event.pull_request.head.ref }}
token: ${{ steps.app-token.outputs.token }}

# pnpm version is read from package.json's packageManager field.
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9

- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version-file: .node-version
cache: pnpm

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Rebuild the action bundle
run: pnpm build
Comment on lines +51 to +55

- name: Commit and push the rebuilt bundle if it changed
run: |
if git diff --quiet -- dist/; then
echo "Bundle already up to date; nothing to push."
exit 0
fi
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add dist/
git commit -m "chore: rebuild action bundle for dependency update"
git push
Comment on lines +66 to +67
Loading