Add new workflow to keep pnpm up to date #13
Workflow file for this run
This file contains 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: Update Package Manager | |
on: | |
schedule: | |
# Run every Monday at 3:27 AM | |
- cron: "27 3 * * 1" | |
push: | |
branches: | |
- main | |
paths: | |
- .github/workflows/update-pnpm.yml | |
pull_request: | |
paths: | |
- .github/workflows/update-pnpm.yml | |
workflow_dispatch: | |
permissions: | |
contents: write | |
pull-requests: write | |
jobs: | |
check-for-new-version: | |
name: Check for new pnpm version | |
runs-on: ubuntu-latest | |
outputs: | |
new-version: ${{ steps.pnpm-info.outputs.version }} | |
branch-exists: ${{ steps.check-branch.outputs.branch-exists }} | |
steps: | |
- name: Generate token | |
id: generate-installation-token | |
uses: actions/create-github-app-token@31c86eb3b33c9b601a1f60f98dcbfd1d70f379b4 # v1.10.3 | |
with: | |
app-id: ${{ secrets.LANEYBOT_APP_ID }} | |
private-key: ${{ secrets.LANEYBOT_PRIVATE_KEY }} | |
- name: Get user info | |
id: get-user-info | |
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 | |
env: | |
LANEYBOT_APP_SLUG: | |
${{ steps.generate-installation-token.outputs.app-slug }} | |
with: | |
github-token: ${{ steps.generate-installation-token.outputs.token }} | |
script: | | |
const appSlug = process.env.LANEYBOT_APP_SLUG; | |
const appInfo = await github.rest.apps.getBySlug({ | |
app_slug: appSlug | |
}); | |
const displayName = appInfo.data.name; | |
const internalID = appInfo.data.id; | |
console.log(`Got app info for '${appSlug}'. Display name: '${displayName}'. ID: '${internalID}'.`); | |
core.setOutput("name", displayName); | |
core.setOutput("id", internalID); | |
core.setOutput("slug", appSlug); | |
- name: Checkout code | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
with: | |
token: ${{ steps.generate-installation-token.outputs.token }} | |
- name: Enable Corepack | |
run: | | |
corepack enable | |
- name: Setup Node.js | |
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 | |
env: | |
COREPACK_ENABLE_STRICT: false | |
with: | |
cache-dependency-path: pnpm-lock.yaml | |
node-version-file: "package.json" | |
cache: "pnpm" | |
- name: Update Package Manager | |
run: | | |
corepack up | |
- name: Check for changes | |
id: git-check | |
run: | | |
git diff --exit-code package.json || echo "changes=true" >> "${GITHUB_OUTPUT}" | |
- name: Get new pnpm version and packageManager field | |
if: steps.git-check.outputs.changes == 'true' | |
id: pnpm-info | |
run: | | |
VERSION="$(pnpm --version)" | |
echo "version=${VERSION}" >> "${GITHUB_OUTPUT}" | |
echo "package-manager=$(jq -r .packageManager package.json)" >> "${GITHUB_OUTPUT}" | |
echo "update-branch=auto-merge/pnpm/${VERSION}" >> "${GITHUB_OUTPUT}" | |
- name: Check if update branch exists | |
if: steps.git-check.outputs.changes == 'true' | |
id: check-branch | |
run: | | |
git ls-remote --exit-code --heads origin ${{ steps.pnpm-info.outputs.update-branch }} \ | |
&& echo "branch-exists=true" >> "${GITHUB_OUTPUT}" \ | |
|| echo "branch-exists=false" >> "${GITHUB_OUTPUT}" | |
- name: Create Pull Request | |
if: > | |
steps.git-check.outputs.changes == 'true' && | |
steps.check-branch.outputs.branch-exists == 'false' | |
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0 | |
with: | |
commit-message: > | |
chore: update packageManager field to pnpm@${{ | |
steps.pnpm-info.outputs.version }} | |
title: > | |
chore: update packageManager field to pnpm@${{ | |
steps.pnpm-info.outputs.version }} | |
body: | | |
Update pnpm to version `${{ steps.pnpm-info.outputs.version }}`. | |
Changes made: | |
- Updated the `packageManager` field to pnpm@${{ steps.pnpm-info.outputs.package-manager }}. | |
This update [was performed automatically][workflow-run] by [the | |
"Update Package Manager" workflow][workflow]. | |
[workflow]: ./github/workflows-update-pnpm.yml | |
[workflow-run]: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
base: main | |
branch: ${{ steps.pnpm-info.outputs.update-branch }} | |
committer: |- | |
${{ steps.get-user-info.outputs.name }} <${{ steps.get-user-info.outputs.id }}+${{ steps.get-user-info.outputs.slug }}@users.noreply.github.com> | |
delete-branch: true | |
labels: | | |
dependencies | |
automated pr | |
token: ${{ steps.generate-installation-token.outputs.token }} |