π release (#64) #16
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | |
| on: | |
| workflow_dispatch: | |
| push: | |
| branches: [ release ] | |
| concurrency: | |
| group: ${{ github.workflow }} | |
| cancel-in-progress: false | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| SEMANTIC_RELEASE_PACKAGE: ${{ github.repository }} | |
| APP_NAME: diode-sdk-go | |
| permissions: | |
| contents: write | |
| jobs: | |
| get-next-version: | |
| name: Semantic release get next version | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "lts/*" | |
| - name: Write package.json | |
| uses: DamianReeves/write-file-action@6929a9a6d1807689191dcc8bbe62b54d70a32b42 # v1.3 | |
| with: | |
| path: package.json | |
| write-mode: overwrite | |
| contents: | | |
| { | |
| "name": "${{ env.APP_NAME }}", | |
| "version": "1.0.0", | |
| "devDependencies": { | |
| "semantic-release-export-data": "^1.0.1", | |
| "semantic-release": "25.0.0-beta.6", | |
| "@semantic-release/changelog": "^6.0.3" | |
| } | |
| } | |
| - name: Write .releaserc.json | |
| uses: DamianReeves/write-file-action@6929a9a6d1807689191dcc8bbe62b54d70a32b42 # v1.3 | |
| with: | |
| path: .releaserc.json | |
| write-mode: overwrite | |
| contents: | | |
| { | |
| "branches": "release", | |
| "repositoryUrl": "https://github.com/netboxlabs/diode-sdk-go", | |
| "debug": "true", | |
| "tagFormat": "v${version}", | |
| "plugins": [ | |
| ["semantic-release-export-data"], | |
| ["@semantic-release/commit-analyzer", { | |
| "releaseRules": [ | |
| { "message": "*", "release": "patch"}, | |
| { "message": "fix*", "release": "patch" }, | |
| { "message": "feat*", "release": "minor" }, | |
| { "message": "perf*", "release": "major" } | |
| ] | |
| }], | |
| "@semantic-release/release-notes-generator", | |
| [ | |
| "@semantic-release/changelog", | |
| { | |
| "changelogFile": "CHANGELOG.md", | |
| "changelogTitle": "# Semantic Versioning Changelog" | |
| } | |
| ], | |
| [ | |
| "@semantic-release/github", | |
| { | |
| "assets": [ | |
| { | |
| "path": "release/**" | |
| } | |
| ] | |
| } | |
| ] | |
| ] | |
| } | |
| - name: Upload artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: semantic-release-artifacts | |
| path: | | |
| package.json | |
| .releaserc.json | |
| include-hidden-files: true | |
| retention-days: 1 | |
| if-no-files-found: error | |
| - name: setup semantic-release | |
| run: npm install --legacy-peer-deps | |
| - name: release dry-run | |
| env: | |
| SLACK_WEBHOOK: ${{ secrets.SLACK_SEMANTIC_RELEASE_WEBHOOK }} | |
| run: npx semantic-release --debug --dry-run | |
| id: get-next-version | |
| - name: Set short sha output | |
| id: short-sha | |
| run: echo "short-sha=${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT" | |
| - name: Set release version | |
| id: release-version | |
| run: | | |
| echo "release-version=`echo ${{ steps.get-next-version.outputs.new-release-version }} | sed 's/v//g'`" >> "$GITHUB_OUTPUT" | |
| outputs: | |
| new-release-published: ${{ steps.get-next-version.outputs.new-release-published }} | |
| new-release-version: ${{ steps.release-version.outputs.release-version }} | |
| short-sha: ${{ steps.short-sha.outputs.short-sha }} | |
| confirm-version: | |
| name: Next version ${{ needs.get-next-version.outputs.new-release-version }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| needs: get-next-version | |
| if: needs.get-next-version.outputs.new-release-published == 'true' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - run: echo "The new release version is ${{ needs.get-next-version.outputs.new-release-version }} commit ${{ needs.get-next-version.outputs.short-sha }}" | |
| semantic-release: | |
| name: Semantic release | |
| needs: confirm-version | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "lts/*" | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: semantic-release-artifacts | |
| - name: setup semantic-release | |
| run: npm install --legacy-peer-deps | |
| - name: Release | |
| env: | |
| SLACK_WEBHOOK: ${{ secrets.SLACK_OBSERVABILITY_RELEASE_WEBHOOK }} | |
| run: npx semantic-release --debug |