From 2ced0ec802555227820fef3fd7359a1faf78678c Mon Sep 17 00:00:00 2001 From: Peep van Puijenbroek Date: Wed, 22 Apr 2026 11:23:32 +0200 Subject: [PATCH 1/5] feat(ci): add automated GitHub Actions release pipeline MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace Changesets with semantic-release for commit-driven versioning and automated CHANGELOG generation (feat→minor, fix→patch, BREAKING→major) - Add ci.yml: parallel test matrix for root + each workspace package - Add release.yml: sequential semantic-release per workspace package, publishes from src/main/target/ via custom scripts/publish-workspaces.sh - Add release-core.yml: workflow_dispatch release for @toppynl/twing with dry-run support and semver validation - Add .releaserc/ configs for html-extra, components, cache-extra - Add scripts/publish-workspaces.sh: injects NEXT_VERSION as VERSION env var, builds with rollup, publishes from target/ directory - Fix workspace packages: move peer deps to devDependencies to prevent workspace:* leaking into published package.json - Add LICENSE files to html-extra and components packages - Split build:lib from build:main in root to allow CI to skip bundling - Add mkdir -p bundle guard to bundle script for clean CI checkouts --- .github/workflows/ci.yml | 71 +++++++++++++++++++++++ .github/workflows/release-core.yml | 93 ++++++++++++++++++++++++++++++ .github/workflows/release.yml | 58 +++++++++++++++++++ .releaserc/cache.json | 40 +++++++++++++ .releaserc/components.json | 40 +++++++++++++ .releaserc/html-extra.json | 40 +++++++++++++ package.json | 23 +++++--- scripts/publish-workspaces.sh | 21 +++++++ 8 files changed, 379 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/release-core.yml create mode 100644 .github/workflows/release.yml create mode 100644 .releaserc/cache.json create mode 100644 .releaserc/components.json create mode 100644 .releaserc/html-extra.json create mode 100755 scripts/publish-workspaces.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..6cf45350 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,71 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + test-root: + name: Test @toppynl/twing + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v4 + with: + version: 10.30.0 + + - uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'pnpm' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build library + run: npm run build:lib + + - name: Build test suite + run: npm run build:test + + - name: Run tests + run: npm test + + test-workspaces: + name: Test ${{ matrix.package.filter }} + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + package: + - filter: '@toppynl/twing-html-extra' + path: packages/html-extra + - filter: '@toppynl/twing-components' + path: packages/components + - filter: '@toppynl/twing-cache-extra' + path: packages/cache + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v4 + with: + version: 10.30.0 + + - uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'pnpm' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build root (workspace dependency) + run: npm run build:lib + + - name: Build and test ${{ matrix.package.filter }} + run: | + pnpm --filter="${{ matrix.package.filter }}" run build:test + pnpm --filter="${{ matrix.package.filter }}" run test diff --git a/.github/workflows/release-core.yml b/.github/workflows/release-core.yml new file mode 100644 index 00000000..47113a3f --- /dev/null +++ b/.github/workflows/release-core.yml @@ -0,0 +1,93 @@ +name: Release @toppynl/twing + +on: + workflow_dispatch: + inputs: + version: + description: 'Version to publish (e.g. 8.0.0)' + required: true + type: string + dry_run: + description: 'Dry run — build and verify without publishing' + required: false + type: boolean + default: false + +jobs: + release-core: + name: Publish @toppynl/twing@${{ inputs.version }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - uses: pnpm/action-setup@v4 + with: + version: 10.30.0 + + - uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'pnpm' + registry-url: 'https://registry.npmjs.org' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Validate version + run: | + if ! echo "${{ inputs.version }}" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?$'; then + echo "ERROR: '${{ inputs.version }}' is not a valid semver string" >&2 + exit 1 + fi + + - name: Update package.json version + run: | + node -e " + const fs = require('fs'); + const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8')); + pkg.version = '${{ inputs.version }}'; + fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2) + '\n'); + " + + - name: Build @toppynl/twing + env: + VERSION: ${{ inputs.version }} + run: npm run build:main + + - name: Verify target version + run: | + TARGET_VERSION=$(node -e "console.log(require('./src/main/target/package.json').version)") + if [[ "${TARGET_VERSION}" != "${{ inputs.version }}" ]]; then + echo "ERROR: target version ${TARGET_VERSION} != input ${{ inputs.version }}" >&2 + exit 1 + fi + echo "Verified: src/main/target/package.json@${TARGET_VERSION}" + + - name: Dry run publish + if: inputs.dry_run == true + run: | + cd src/main/target + npm publish --access public --dry-run + echo "DRY RUN complete — nothing published" + + - name: Publish @toppynl/twing + if: inputs.dry_run == false + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + run: | + cd src/main/target + npm publish --access public + + - name: Tag and commit + if: inputs.dry_run == false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + git add package.json + git commit -m "chore: bump @toppynl/twing to ${{ inputs.version }} [skip ci]" || true + git tag "twing-v${{ inputs.version }}" -m "Release @toppynl/twing@${{ inputs.version }}" + git push origin main --follow-tags diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..096ee13c --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,58 @@ +name: Release Workspace Packages + +on: + push: + branches: [main] + +permissions: + contents: write + issues: write + pull-requests: write + +jobs: + release-workspaces: + name: Release workspace packages + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + persist-credentials: false + + - uses: pnpm/action-setup@v4 + with: + version: 10.30.0 + + - uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'pnpm' + registry-url: 'https://registry.npmjs.org' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build root (workspace dependency) + run: npm run build:lib + + - name: Release @toppynl/twing-html-extra + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + run: npx semantic-release --extends ./.releaserc/html-extra.json + + - name: Release @toppynl/twing-components + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + run: npx semantic-release --extends ./.releaserc/components.json + + - name: Release @toppynl/twing-cache-extra + if: hashFiles('packages/cache/package.json') != '' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + run: npx semantic-release --extends ./.releaserc/cache.json diff --git a/.releaserc/cache.json b/.releaserc/cache.json new file mode 100644 index 00000000..dcea4f13 --- /dev/null +++ b/.releaserc/cache.json @@ -0,0 +1,40 @@ +{ + "extends": "semantic-release-monorepo", + "pkgRoot": "packages/cache", + "tagFormat": "twing-cache-extra-v${version}", + "branches": ["main"], + "plugins": [ + "@semantic-release/commit-analyzer", + "@semantic-release/release-notes-generator", + [ + "@semantic-release/changelog", + { + "changelogFile": "packages/cache/CHANGELOG.md" + } + ], + [ + "@semantic-release/npm", + { + "npmPublish": false, + "pkgRoot": "packages/cache" + } + ], + [ + "@semantic-release/exec", + { + "publishCmd": "NEXT_VERSION=${nextRelease.version} bash scripts/publish-workspaces.sh @toppynl/twing-cache-extra packages/cache" + } + ], + [ + "@semantic-release/git", + { + "assets": [ + "packages/cache/package.json", + "packages/cache/CHANGELOG.md" + ], + "message": "chore(release): @toppynl/twing-cache-extra@${nextRelease.version} [skip ci]" + } + ], + "@semantic-release/github" + ] +} diff --git a/.releaserc/components.json b/.releaserc/components.json new file mode 100644 index 00000000..8e10bcb1 --- /dev/null +++ b/.releaserc/components.json @@ -0,0 +1,40 @@ +{ + "extends": "semantic-release-monorepo", + "pkgRoot": "packages/components", + "tagFormat": "twing-components-v${version}", + "branches": ["main"], + "plugins": [ + "@semantic-release/commit-analyzer", + "@semantic-release/release-notes-generator", + [ + "@semantic-release/changelog", + { + "changelogFile": "packages/components/CHANGELOG.md" + } + ], + [ + "@semantic-release/npm", + { + "npmPublish": false, + "pkgRoot": "packages/components" + } + ], + [ + "@semantic-release/exec", + { + "publishCmd": "NEXT_VERSION=${nextRelease.version} bash scripts/publish-workspaces.sh @toppynl/twing-components packages/components" + } + ], + [ + "@semantic-release/git", + { + "assets": [ + "packages/components/package.json", + "packages/components/CHANGELOG.md" + ], + "message": "chore(release): @toppynl/twing-components@${nextRelease.version} [skip ci]" + } + ], + "@semantic-release/github" + ] +} diff --git a/.releaserc/html-extra.json b/.releaserc/html-extra.json new file mode 100644 index 00000000..e2c3ceca --- /dev/null +++ b/.releaserc/html-extra.json @@ -0,0 +1,40 @@ +{ + "extends": "semantic-release-monorepo", + "pkgRoot": "packages/html-extra", + "tagFormat": "twing-html-extra-v${version}", + "branches": ["main"], + "plugins": [ + "@semantic-release/commit-analyzer", + "@semantic-release/release-notes-generator", + [ + "@semantic-release/changelog", + { + "changelogFile": "packages/html-extra/CHANGELOG.md" + } + ], + [ + "@semantic-release/npm", + { + "npmPublish": false, + "pkgRoot": "packages/html-extra" + } + ], + [ + "@semantic-release/exec", + { + "publishCmd": "NEXT_VERSION=${nextRelease.version} bash scripts/publish-workspaces.sh @toppynl/twing-html-extra packages/html-extra" + } + ], + [ + "@semantic-release/git", + { + "assets": [ + "packages/html-extra/package.json", + "packages/html-extra/CHANGELOG.md" + ], + "message": "chore(release): @toppynl/twing-html-extra@${nextRelease.version} [skip ci]" + } + ], + "@semantic-release/github" + ] +} diff --git a/package.json b/package.json index 96db402b..7026f6a5 100644 --- a/package.json +++ b/package.json @@ -24,13 +24,12 @@ "prebuild:test:browser": "npm run prebuild:test", "test": "node src/test/target/index.cjs && node src/test/target/entry.cjs", "test:browser": "browserify src/test/target/index.cjs | tape-run --sandbox=false", - "build:main": "(cd src/main && rollup -c) && npm run bundle && cp README.md src/main/target/README.md && cp LICENSE src/main/target/LICENSE", + "build:lib": "(cd src/main && rollup -c) && cp README.md src/main/target/README.md && cp LICENSE src/main/target/LICENSE", + "build:main": "npm run build:lib && npm run bundle", "build:test": "(cd src/test && rollup -c)", - "bundle": "browserify src/main/target/index.cjs -g uglifyify -s Twing -o bundle/lib.min.js", + "bundle": "mkdir -p bundle && browserify src/main/target/index.cjs -g uglifyify -s Twing -o bundle/lib.min.js", "build:workspaces": "pnpm -r --filter=\"./packages/*\" build:main", - "test:workspaces": "pnpm -r --filter=\"./packages/*\" test", - "changeset": "changeset", - "release": "changeset publish" + "test:workspaces": "pnpm -r --filter=\"./packages/*\" test" }, "dependencies": { "@nightlycommit/rollup-plugin-package-manifest": "^1.0.0-alpha.2", @@ -66,7 +65,17 @@ "tape": "^5.6.1", "tape-run": "^11.0.0", "twig-lexer": "^0.9.0", - "uglifyify": "^5.0.2", - "@changesets/cli": "^2.27.0" + "uglifyify": "^5.0.2" + }, + "devDependencies": { + "@semantic-release/changelog": "^6.0.3", + "@semantic-release/commit-analyzer": "^13.0.1", + "@semantic-release/exec": "^6.0.3", + "@semantic-release/git": "^10.0.1", + "@semantic-release/github": "^11.0.1", + "@semantic-release/npm": "^12.0.1", + "@semantic-release/release-notes-generator": "^14.0.3", + "semantic-release": "^24.2.3", + "semantic-release-monorepo": "^8.0.3" } } diff --git a/scripts/publish-workspaces.sh b/scripts/publish-workspaces.sh new file mode 100755 index 00000000..b4f8315a --- /dev/null +++ b/scripts/publish-workspaces.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Usage: scripts/publish-workspaces.sh +# Env: NEXT_VERSION — set by @semantic-release/exec via ${nextRelease.version} + +PACKAGE_FILTER="${1}" +PACKAGE_PATH="${2}" +TARGET_DIR="${PACKAGE_PATH}/src/main/target" + +if [[ -z "${NEXT_VERSION:-}" ]]; then + echo "ERROR: NEXT_VERSION is not set" >&2 + exit 1 +fi + +echo "Publishing ${PACKAGE_FILTER}@${NEXT_VERSION} from ${TARGET_DIR}" + +VERSION="${NEXT_VERSION}" pnpm --filter="${PACKAGE_FILTER}" run build:main + +cd "${TARGET_DIR}" +npm publish --access public From 9dfd7fc504bf489d82d5b8c7a605553e1758ad74 Mon Sep 17 00:00:00 2001 From: Peep van Puijenbroek Date: Wed, 22 Apr 2026 11:38:47 +0200 Subject: [PATCH 2/5] feat(ci): add GitHub Release creation to release-core workflow --- .github/workflows/release-core.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/release-core.yml b/.github/workflows/release-core.yml index 47113a3f..aa195844 100644 --- a/.github/workflows/release-core.yml +++ b/.github/workflows/release-core.yml @@ -91,3 +91,13 @@ jobs: git commit -m "chore: bump @toppynl/twing to ${{ inputs.version }} [skip ci]" || true git tag "twing-v${{ inputs.version }}" -m "Release @toppynl/twing@${{ inputs.version }}" git push origin main --follow-tags + + - name: Create GitHub Release + if: inputs.dry_run == false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh release create "twing-v${{ inputs.version }}" \ + --title "@toppynl/twing@${{ inputs.version }}" \ + --generate-notes \ + --notes-start-tag "twing-v$(git tag --sort=-version:refname | grep '^twing-v' | sed -n '2p')" From 4a8e600286522f9fba5799dfffc6c4398a0a28ba Mon Sep 17 00:00:00 2001 From: Peep van Puijenbroek Date: Wed, 22 Apr 2026 11:48:05 +0200 Subject: [PATCH 3/5] chore(ci): pin action SHAs and add concurrency guards --- .github/workflows/ci.yml | 19 +++++++++++++------ .github/workflows/release-core.yml | 13 ++++++++++--- .github/workflows/release.yml | 10 +++++++--- 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6cf45350..1dfad95a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,18 +6,25 @@ on: pull_request: branches: [main] +permissions: + contents: read + +concurrency: + group: ci-${{ github.ref }} + cancel-in-progress: true + jobs: test-root: name: Test @toppynl/twing runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 with: version: 10.30.0 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version: '20' cache: 'pnpm' @@ -48,13 +55,13 @@ jobs: - filter: '@toppynl/twing-cache-extra' path: packages/cache steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 with: version: 10.30.0 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version: '20' cache: 'pnpm' diff --git a/.github/workflows/release-core.yml b/.github/workflows/release-core.yml index aa195844..9ff43610 100644 --- a/.github/workflows/release-core.yml +++ b/.github/workflows/release-core.yml @@ -13,20 +13,27 @@ on: type: boolean default: false +permissions: + contents: write + +concurrency: + group: release-core + cancel-in-progress: false + jobs: release-core: name: Publish @toppynl/twing@${{ inputs.version }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 with: fetch-depth: 0 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 with: version: 10.30.0 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version: '20' cache: 'pnpm' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 096ee13c..ec35016d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,21 +9,25 @@ permissions: issues: write pull-requests: write +concurrency: + group: release-workspaces + cancel-in-progress: false + jobs: release-workspaces: name: Release workspace packages runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 with: fetch-depth: 0 persist-credentials: false - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 with: version: 10.30.0 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version: '20' cache: 'pnpm' From fb7815e4bfb01aa321e2e4c3879fe29615efe63d Mon Sep 17 00:00:00 2001 From: Peep van Puijenbroek Date: Wed, 22 Apr 2026 11:50:59 +0200 Subject: [PATCH 4/5] Revert "chore(ci): pin action SHAs and add concurrency guards" This reverts commit 4a8e600286522f9fba5799dfffc6c4398a0a28ba. --- .github/workflows/ci.yml | 19 ++++++------------- .github/workflows/release-core.yml | 13 +++---------- .github/workflows/release.yml | 10 +++------- 3 files changed, 12 insertions(+), 30 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1dfad95a..6cf45350 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,25 +6,18 @@ on: pull_request: branches: [main] -permissions: - contents: read - -concurrency: - group: ci-${{ github.ref }} - cancel-in-progress: true - jobs: test-root: name: Test @toppynl/twing runs-on: ubuntu-latest steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + - uses: actions/checkout@v4 - - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 + - uses: pnpm/action-setup@v4 with: version: 10.30.0 - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 + - uses: actions/setup-node@v4 with: node-version: '20' cache: 'pnpm' @@ -55,13 +48,13 @@ jobs: - filter: '@toppynl/twing-cache-extra' path: packages/cache steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + - uses: actions/checkout@v4 - - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 + - uses: pnpm/action-setup@v4 with: version: 10.30.0 - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 + - uses: actions/setup-node@v4 with: node-version: '20' cache: 'pnpm' diff --git a/.github/workflows/release-core.yml b/.github/workflows/release-core.yml index 9ff43610..aa195844 100644 --- a/.github/workflows/release-core.yml +++ b/.github/workflows/release-core.yml @@ -13,27 +13,20 @@ on: type: boolean default: false -permissions: - contents: write - -concurrency: - group: release-core - cancel-in-progress: false - jobs: release-core: name: Publish @toppynl/twing@${{ inputs.version }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + - uses: actions/checkout@v4 with: fetch-depth: 0 - - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 + - uses: pnpm/action-setup@v4 with: version: 10.30.0 - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 + - uses: actions/setup-node@v4 with: node-version: '20' cache: 'pnpm' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ec35016d..096ee13c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,25 +9,21 @@ permissions: issues: write pull-requests: write -concurrency: - group: release-workspaces - cancel-in-progress: false - jobs: release-workspaces: name: Release workspace packages runs-on: ubuntu-latest steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + - uses: actions/checkout@v4 with: fetch-depth: 0 persist-credentials: false - - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 + - uses: pnpm/action-setup@v4 with: version: 10.30.0 - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 + - uses: actions/setup-node@v4 with: node-version: '20' cache: 'pnpm' From 32eaecabb63dbb657fe5edf5fd4614b71cbff9ce Mon Sep 17 00:00:00 2001 From: Peep van Puijenbroek Date: Wed, 22 Apr 2026 11:54:46 +0200 Subject: [PATCH 5/5] chore(ci): use NPM_TOKEN_TOPPYNL_ORG secret --- .github/workflows/release-core.yml | 2 +- .github/workflows/release.yml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release-core.yml b/.github/workflows/release-core.yml index aa195844..64a98a9c 100644 --- a/.github/workflows/release-core.yml +++ b/.github/workflows/release-core.yml @@ -75,7 +75,7 @@ jobs: - name: Publish @toppynl/twing if: inputs.dry_run == false env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN_TOPPYNL_ORG }} run: | cd src/main/target npm publish --access public diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 096ee13c..3776b076 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -38,21 +38,21 @@ jobs: - name: Release @toppynl/twing-html-extra env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN_TOPPYNL_ORG }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN_TOPPYNL_ORG }} run: npx semantic-release --extends ./.releaserc/html-extra.json - name: Release @toppynl/twing-components env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN_TOPPYNL_ORG }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN_TOPPYNL_ORG }} run: npx semantic-release --extends ./.releaserc/components.json - name: Release @toppynl/twing-cache-extra if: hashFiles('packages/cache/package.json') != '' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN_TOPPYNL_ORG }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN_TOPPYNL_ORG }} run: npx semantic-release --extends ./.releaserc/cache.json