diff --git a/.github/workflows/release.beta.yml b/.github/workflows/release.beta.yml deleted file mode 100644 index 907be4c..0000000 --- a/.github/workflows/release.beta.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: Release (beta) -on: - push: - tags: - - 'v[0-9]+.[0-9]+.[0-9]+-beta.[0-9]+' -jobs: - publish: - name: NPM Publish (beta) - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '20' - - run: npm install --global npm@10 - - run: npm ci - - uses: JS-DevTools/npm-publish@v3 - with: - token: ${{ secrets.NPM_TOKEN }} - access: 'public' - tag: 'beta' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3d0bc0a..d2f16e6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,13 +2,65 @@ name: Release on: push: tags: - - 'v[0-9]+.[0-9]+.[0-9]+' + - 'v*' # Triggers on any tag starting with v (e.g. v1.0.0, v1.0.0-beta.1) + +permissions: + id-token: write # Required for OIDC + contents: read + jobs: - release: - name: Github Release + # ------------------------------------------------------------------ + # ALPHA RELEASE JOB + # Runs only if the tag contains '-alpha' + # ------------------------------------------------------------------ + publish-alpha: + name: NPM Publish (alpha) runs-on: ubuntu-latest + if: contains(github.ref, '-alpha') steps: - uses: actions/checkout@v4 + - uses: actions/setup-node@v6 + with: + node-version: '24' + - run: npm install --global npm@11 + - run: npm ci + - run: npm test + - uses: JS-DevTools/npm-publish@v4 + with: + access: 'public' + tag: 'alpha' + + # ------------------------------------------------------------------ + # BETA RELEASE JOB + # Runs only if the tag contains '-beta' + # ------------------------------------------------------------------ + publish-beta: + name: NPM Publish (beta) + runs-on: ubuntu-latest + if: contains(github.ref, '-beta') + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-node@v6 + with: + node-version: '24' + - run: npm install --global npm@11 + - run: npm ci + - run: npm test + - uses: JS-DevTools/npm-publish@v4 + with: + access: 'public' + tag: 'beta' + + # ------------------------------------------------------------------ + # PRODUCTION JOBS + # Run only if the tag does NOT contain a hyphen (e.g. v1.0.0) + # ------------------------------------------------------------------ + release-production: + name: Github Release + runs-on: ubuntu-latest + if: ${{ !contains(github.ref, '-') }} + steps: + - uses: actions/checkout@v6 - uses: docker://antonyurchenko/git-release:v6 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -16,17 +68,36 @@ jobs: PRE_RELEASE: 'false' CHANGELOG_FILE: 'CHANGELOG.md' ALLOW_EMPTY_CHANGELOG: 'false' - publish: - name: NPM Publish + docs-production: + name: Documentation runs-on: ubuntu-latest + if: ${{ !contains(github.ref, '-') }} steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/checkout@v6 + - uses: actions/setup-node@v6 + with: + node-version: '24' + - run: npm install --global npm@11 + - run: npm ci + - run: npm run docs + - uses: devops-infra/action-commit-push@v1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + commit_prefix: '[DOCS] ' + commit_message: ${{ github.ref_name }} + target_branch: 'master' + publish-production: + name: NPM Publish (latest) + runs-on: ubuntu-latest + if: ${{ !contains(github.ref, '-') }} + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-node@v6 with: - node-version: '20' - - run: npm install --global npm@10 + node-version: '24' + - run: npm install --global npm@11 - run: npm ci - - uses: JS-DevTools/npm-publish@v3 + - run: npm test + - uses: JS-DevTools/npm-publish@v4 with: - token: ${{ secrets.NPM_TOKEN }} access: 'public'