From e9a571e89dafd8cc53d4af072a90a485f4daa276 Mon Sep 17 00:00:00 2001 From: bourgeoa Date: Mon, 16 Mar 2026 12:02:17 +0100 Subject: [PATCH 1/2] reusable workflow --- .github/workflows/publish-prerelease.yml | 71 ++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 .github/workflows/publish-prerelease.yml diff --git a/.github/workflows/publish-prerelease.yml b/.github/workflows/publish-prerelease.yml new file mode 100644 index 0000000..19ace09 --- /dev/null +++ b/.github/workflows/publish-prerelease.yml @@ -0,0 +1,71 @@ +name: Reusable Publish Test + +on: + workflow_call: + inputs: + node_version: + description: Node.js version to use + type: string + required: false + default: '22' + +jobs: + prerelease-check: + runs-on: ubuntu-latest + outputs: + name: ${{ steps.check.outputs.name }} + version: ${{ steps.check.outputs.version }} + is_prerelease: ${{ steps.check.outputs.is_prerelease }} + exists: ${{ steps.check.outputs.exists }} + should_publish: ${{ steps.check.outputs.should_publish }} + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: ${{ inputs.node_version }} + registry-url: https://registry.npmjs.org + - name: Check prerelease publishability + id: check + run: | + NAME=$(node -p "require('./package.json').name") + VERSION=$(node -p "require('./package.json').version") + echo "name=$NAME" >> "$GITHUB_OUTPUT" + echo "version=$VERSION" >> "$GITHUB_OUTPUT" + + IS_PRERELEASE=false + if [ "${VERSION#*-}" != "$VERSION" ]; then + IS_PRERELEASE=true + fi + echo "is_prerelease=$IS_PRERELEASE" >> "$GITHUB_OUTPUT" + + EXISTS=false + if npm view "$NAME@$VERSION" version >/dev/null 2>&1; then + EXISTS=true + fi + echo "exists=$EXISTS" >> "$GITHUB_OUTPUT" + + if [ "$IS_PRERELEASE" = "true" ] && [ "$EXISTS" = "false" ]; then + echo "should_publish=true" >> "$GITHUB_OUTPUT" + else + echo "should_publish=false" >> "$GITHUB_OUTPUT" + fi + + npm-publish-build: + needs: prerelease-check + if: needs.prerelease-check.outputs.should_publish == 'true' + runs-on: ubuntu-latest + permissions: + id-token: write + contents: read + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: ${{ inputs.node_version }} + registry-url: https://registry.npmjs.org + - name: Update npm to latest (required for OIDC) + run: npm install -g npm@latest + - name: Disable pre- and post-publish actions + run: sed -i -E 's/"((pre|post)publish)/"ignore:\1/' package.json + - name: Publish to npm + run: npm publish --tag dev From eaad215dc9c8a5181d981e2eb000ace3952872a0 Mon Sep 17 00:00:00 2001 From: bourgeoa Date: Tue, 17 Mar 2026 15:50:40 +0100 Subject: [PATCH 2/2] update node_version type --- .github/workflows/publish-prerelease.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish-prerelease.yml b/.github/workflows/publish-prerelease.yml index 19ace09..b34a3bb 100644 --- a/.github/workflows/publish-prerelease.yml +++ b/.github/workflows/publish-prerelease.yml @@ -5,9 +5,9 @@ on: inputs: node_version: description: Node.js version to use - type: string + type: number required: false - default: '22' + default: 22 jobs: prerelease-check: