diff --git a/.mokogitea/workflows/npm-publish.yml b/.mokogitea/workflows/npm-publish.yml new file mode 100644 index 0000000..1bf0526 --- /dev/null +++ b/.mokogitea/workflows/npm-publish.yml @@ -0,0 +1,51 @@ +# Copyright (C) 2026 Moko Consulting +# SPDX-License-Identifier: GPL-3.0-or-later + +name: "Publish to npm" + +on: + push: + branches: + - main + workflow_dispatch: + +jobs: + publish: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + registry-url: 'https://registry.npmjs.org' + + - name: Install dependencies + run: npm ci + + - name: Build + run: npm run build + + - name: Check if version changed + id: version + run: | + PKG_NAME=$(node -p "require('./package.json').name") + PKG_VERSION=$(node -p "require('./package.json').version") + PUBLISHED=$(npm view "${PKG_NAME}@${PKG_VERSION}" version 2>/dev/null || echo "") + if [ "$PUBLISHED" = "$PKG_VERSION" ]; then + echo "skip=true" >> "$GITHUB_OUTPUT" + echo "Version ${PKG_VERSION} already published, skipping." + else + echo "skip=false" >> "$GITHUB_OUTPUT" + echo "Publishing ${PKG_NAME}@${PKG_VERSION}" + fi + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + + - name: Publish + if: steps.version.outputs.skip != 'true' + run: npm publish --access public + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}