From 37b5887f2e69806918797007129edcdbbe3c7793 Mon Sep 17 00:00:00 2001 From: Aurimas Butkus Date: Tue, 7 Jul 2026 17:16:58 +0300 Subject: [PATCH] ci: add build-release workflow --- .github/workflows/build-release.yaml | 91 ++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 .github/workflows/build-release.yaml diff --git a/.github/workflows/build-release.yaml b/.github/workflows/build-release.yaml new file mode 100644 index 0000000..d9223c8 --- /dev/null +++ b/.github/workflows/build-release.yaml @@ -0,0 +1,91 @@ +name: build-release + +on: + push: + branches: + - main + +jobs: + release: + runs-on: ubuntu-latest + permissions: + id-token: write + contents: write + outputs: + new_version: ${{ steps.version.outputs.version }} + released: ${{ steps.version.outputs.released }} + steps: + - name: Repo checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Resolve version from package.json + id: version + run: | + VERSION=$(jq -r .version package.json) + echo "version=$VERSION" >> "$GITHUB_OUTPUT" + if git rev-parse "v$VERSION" >/dev/null 2>&1; then + echo "released=false" >> "$GITHUB_OUTPUT" + echo "Tag v$VERSION already exists — skipping release." + else + echo "released=true" >> "$GITHUB_OUTPUT" + fi + + - name: Create release + if: steps.version.outputs.released == 'true' + uses: ncipollo/release-action@v1 + with: + tag: v${{ steps.version.outputs.version }} + generateReleaseNotes: true + + publish-npmjs: + runs-on: ubuntu-latest + needs: [release] + if: needs.release.outputs.released == 'true' + permissions: + contents: read + id-token: write + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: '20.x' + registry-url: 'https://registry.npmjs.org' + + - name: Update NPM + run: npm install -g npm@latest + + - name: Install dependencies + run: npm install + + - name: Publish package + run: npm publish --provenance --access public + + publish-github: + runs-on: ubuntu-latest + needs: [release] + if: needs.release.outputs.released == 'true' + permissions: + contents: read + id-token: write + packages: write + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: '20.x' + registry-url: 'https://npm.pkg.github.com' + scope: '@hostinger' + + - name: Install dependencies + run: npm install + + - name: Publish package + run: | + sed -i 's+"name": ".*+"name": "@${{ github.repository }}",+gI' ./package.json + npm publish --provenance --access public + env: + NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}