Merge pull request #48 from netboxlabs/develop #18
This file contains 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: Network Discovery - release | |
on: | |
workflow_dispatch: | |
push: | |
branches: [ release ] | |
paths: | |
- "network-discovery/**" | |
- "!network-discovery/docker/**" | |
concurrency: | |
group: ${{ github.workflow }} | |
cancel-in-progress: false | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
SEMANTIC_RELEASE_PACKAGE: ${{ github.repository }} | |
GO_VERSION: '1.23.x' | |
APP_NAME: network-discovery | |
permissions: | |
contents: write | |
issues: write | |
pull-requests: 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/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/orb-discovery", | |
"debug": "true", | |
"tagFormat": "${{ env.APP_NAME }}/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: setup semantic-release | |
run: npm i | |
- 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 "::set-output name=short-sha::${GITHUB_SHA::7}" | |
- name: Set release version | |
id: release-version | |
run: | | |
echo "::set-output name=release-version::`echo ${{ steps.get-next-version.outputs.new-release-version }} | sed 's/v//g'`" | |
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 }}" | |
build: | |
name: Build | |
needs: get-next-version | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
if: needs.get-next-version.outputs.new-release-published == 'true' | |
env: | |
BUILD_VERSION: ${{ needs.get-next-version.outputs.new-release-version }} | |
BUILD_COMMIT: ${{ needs.get-next-version.outputs.short-sha }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf #v3.2.0 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 #v3.8.0 | |
- name: Login to Docker Hub | |
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 #v3.3.0 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Set build info | |
run: | | |
echo $BUILD_COMMIT > ./network-discovery/version/BUILD_COMMIT.txt | |
echo $BUILD_VERSION > ./network-discovery/version/BUILD_VERSION.txt | |
- name: Build image and push | |
uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 #v6.10.0 | |
with: | |
context: network-discovery | |
file: network-discovery/docker/Dockerfile | |
platforms: linux/amd64, linux/arm64 | |
push: true | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
tags: | | |
netboxlabs/network-discovery:latest | |
netboxlabs/network-discovery:${{ env.BUILD_VERSION }} | |
build-args: | | |
GO_VERSION=${{ env.GO_VERSION }} | |
semantic-release: | |
name: Semantic release | |
needs: build | |
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/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/orb-discovery", | |
"debug": "true", | |
"tagFormat": "${{ env.APP_NAME }}/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: setup semantic-release | |
run: npm i | |
- name: Release | |
env: | |
SLACK_WEBHOOK: ${{ secrets.SLACK_OBSERVABILITY_RELEASE_WEBHOOK }} | |
run: npx semantic-release --debug |