Merge pull request #1730 from paperclipai/fix/docker-patches #6
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Refresh Lockfile | |
| on: | |
| push: | |
| branches: | |
| - master | |
| workflow_dispatch: | |
| concurrency: | |
| group: refresh-lockfile-master | |
| cancel-in-progress: false | |
| jobs: | |
| refresh: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 9.15.4 | |
| run_install: false | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: pnpm | |
| - name: Refresh pnpm lockfile | |
| run: pnpm install --lockfile-only --ignore-scripts --no-frozen-lockfile | |
| - name: Fail on unexpected file changes | |
| run: | | |
| changed="$(git status --porcelain)" | |
| if [ -z "$changed" ]; then | |
| echo "Lockfile is already up to date." | |
| exit 0 | |
| fi | |
| if printf '%s\n' "$changed" | grep -Fvq ' pnpm-lock.yaml'; then | |
| echo "Unexpected files changed during lockfile refresh:" | |
| echo "$changed" | |
| exit 1 | |
| fi | |
| - name: Create or update pull request | |
| id: upsert-pr | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| run: | | |
| if git diff --quiet -- pnpm-lock.yaml; then | |
| echo "Lockfile unchanged, nothing to do." | |
| echo "pr_created=false" >> "$GITHUB_OUTPUT" | |
| exit 0 | |
| fi | |
| BRANCH="chore/refresh-lockfile" | |
| git config user.name "lockfile-bot" | |
| git config user.email "lockfile-bot@users.noreply.github.com" | |
| git checkout -B "$BRANCH" | |
| git add pnpm-lock.yaml | |
| git commit -m "chore(lockfile): refresh pnpm-lock.yaml" | |
| git push --force origin "$BRANCH" | |
| # Create PR if one doesn't already exist | |
| existing=$(gh pr list --head "$BRANCH" --json number --jq '.[0].number') | |
| if [ -z "$existing" ]; then | |
| gh pr create \ | |
| --head "$BRANCH" \ | |
| --title "chore(lockfile): refresh pnpm-lock.yaml" \ | |
| --body "Auto-generated lockfile refresh after dependencies changed on master. This PR only updates pnpm-lock.yaml." | |
| echo "Created new PR." | |
| else | |
| echo "PR #$existing already exists, branch updated via force push." | |
| fi | |
| echo "pr_created=true" >> "$GITHUB_OUTPUT" | |
| - name: Enable auto-merge for lockfile PR | |
| if: steps.upsert-pr.outputs.pr_created == 'true' | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| run: | | |
| pr_url="$(gh pr list --head chore/refresh-lockfile --json url --jq '.[0].url')" | |
| if [ -z "$pr_url" ]; then | |
| echo "Error: lockfile PR was not found." >&2 | |
| exit 1 | |
| fi | |
| gh pr merge --auto --squash --delete-branch "$pr_url" |