diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c632f2d..ac5d7c4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,6 +1,7 @@ name: release on: + workflow_dispatch: push: branches: - "*.x" @@ -17,24 +18,64 @@ jobs: name: release runs-on: ubuntu-latest steps: - # build local version to create token - uses: actions/checkout@v6 - with: - persist-credentials: false - - uses: actions/setup-node@v6 - with: - node-version-file: package.json - - - run: npm ci - - run: npm run build - uses: ./ id: app-token with: app-id: ${{ vars.RELEASER_APP_ID }} private-key: ${{ secrets.RELEASER_APP_PRIVATE_KEY }} - # install release dependencies and release - - run: npm install --no-save @semantic-release/git semantic-release-plugin-github-breaking-version-tag - - run: npx semantic-release --debug + + - uses: googleapis/release-please-action@45996ed1f6d02564a971a2fa1b5860e934307cf7 # v5.0.0 + id: release-please + with: + token: ${{ steps.app-token.outputs.token }} + config-file: ${{ github.ref_name == 'beta' && 'release-please-config.beta.json' || 'release-please-config.json' }} + manifest-file: .release-please-manifest.json + target-branch: ${{ github.ref_name }} + + - uses: actions/checkout@v6 + if: steps.release-please.outputs.prs_created == 'true' + with: + ref: ${{ fromJSON(steps.release-please.outputs.pr).headBranchName }} + token: ${{ steps.app-token.outputs.token }} + + - uses: actions/setup-node@v6 + if: steps.release-please.outputs.prs_created == 'true' + with: + node-version-file: package.json + + - run: npm ci + if: steps.release-please.outputs.prs_created == 'true' + + - run: npm run build + if: steps.release-please.outputs.prs_created == 'true' + + - uses: stefanzweifel/git-auto-commit-action@04702edda442b2e678b25b537cec683a1493fcb9 # v7.1.0 + if: steps.release-please.outputs.prs_created == 'true' + with: + commit_author: "${{ github.actor }} <${{ github.actor_id }}+${{ github.actor }}@users.noreply.github.com>" + commit_message: "chore: update dist files" + file_pattern: dist/** + + - name: Update major version tag + id: update-major-tag + if: steps.release-please.outputs.release_created == 'true' && github.ref_name != 'beta' + uses: octokit/request-action@b91aabaa861c777dcdb14e2387e30eddf04619ae # v3.0.0 + continue-on-error: true + with: + route: PATCH /repos/${{ github.repository }}/git/refs/tags/v${{ steps.release-please.outputs.major }} + sha: ${{ steps.release-please.outputs.sha }} + force: true + env: + GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} + + - name: Create major version tag + if: steps.release-please.outputs.release_created == 'true' && github.ref_name != 'beta' && steps.update-major-tag.outcome == 'failure' + uses: octokit/request-action@b91aabaa861c777dcdb14e2387e30eddf04619ae # v3.0.0 + with: + route: POST /repos/${{ github.repository }}/git/refs + ref: refs/tags/v${{ steps.release-please.outputs.major }} + sha: ${{ steps.release-please.outputs.sha }} env: GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 0000000..b4b8d0f --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "3.1.1" +} diff --git a/package.json b/package.json index fbe0480..d12043d 100644 --- a/package.json +++ b/package.json @@ -28,33 +28,5 @@ "open-cli": "^9.0.0", "undici": "^7.24.6", "yaml": "^2.8.3" - }, - "release": { - "branches": [ - "+([0-9]).x", - "main", - { - "name": "beta", - "prerelease": true - } - ], - "plugins": [ - "@semantic-release/commit-analyzer", - "@semantic-release/release-notes-generator", - "@semantic-release/github", - "@semantic-release/npm", - "semantic-release-plugin-github-breaking-version-tag", - [ - "@semantic-release/git", - { - "assets": [ - "package.json", - "package-lock.json", - "dist/*" - ], - "message": "build(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}" - } - ] - ] } } diff --git a/release-please-config.beta.json b/release-please-config.beta.json new file mode 100644 index 0000000..c05cb93 --- /dev/null +++ b/release-please-config.beta.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "packages": { + ".": { + "prerelease": true, + "prerelease-type": "beta", + "release-type": "node", + "versioning": "prerelease" + } + } +} diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 0000000..ee4d805 --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "packages": { + ".": { + "release-type": "node" + } + } +}