Merge pull request #176 from netboxlabs/develop #26
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: Orb Agent - release | |
on: | |
workflow_dispatch: | |
push: | |
branches: [ release ] | |
paths: | |
- "agent/**" | |
- "cmd/**" | |
- "!agent/docker/**" | |
concurrency: | |
group: ${{ github.workflow }} | |
cancel-in-progress: false | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
SEMANTIC_RELEASE_PACKAGE: ${{ github.repository }} | |
GO_VERSION: '1.24' | |
APP_NAME: orb-agent | |
permissions: | |
contents: write | |
issues: write | |
pull-requests: write | |
id-token: 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/orb-agent", | |
"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": "major*", "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 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 "::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@4574d27a4764455b42196d70a065bc6853246a25 #v3.4.0 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@f7ce87c1d6bead3e36075b2ce75da1f6cc28aaca #v3.9.0 | |
- name: Login to Docker Hub | |
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 #v3.3.0 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Setup JFrog CLI | |
id: setup-jfrog-cli | |
uses: jfrog/setup-jfrog-cli@ff5cb544114ffc152db9cea1cd3d5978d5074946 # v4.5.11 | |
env: | |
JF_URL: https://netboxlabs.jfrog.io | |
JF_PROJECT: obs | |
with: | |
oidc-provider-name: github-ci | |
- name: Login to JFrog Artifactory | |
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 #v3 | |
with: | |
registry: netboxlabs.jfrog.io | |
username: ${{ steps.setup-jfrog-cli.outputs.oidc-user }} | |
password: ${{ steps.setup-jfrog-cli.outputs.oidc-token }} | |
- name: Verify QEMU installation | |
run: | | |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | |
docker run --rm --platform linux/arm64 debian:latest uname -m | |
- name: Set build info | |
run: | | |
echo $BUILD_COMMIT > ./agent/version/BUILD_COMMIT.txt | |
echo $BUILD_VERSION > ./agent/version/BUILD_VERSION.txt | |
- name: Build image and push | |
uses: docker/build-push-action@0adf9959216b96bec444f325f1e493d4aa344497 #v6.14.0 | |
with: | |
context: . | |
file: agent/docker/Dockerfile | |
platforms: linux/amd64, linux/arm64 | |
push: true | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
tags: | | |
netboxlabs/${{ env.APP_NAME }}:latest | |
netboxlabs/${{ env.APP_NAME }}:${{ env.BUILD_VERSION }} | |
netboxlabs.jfrog.io/obs-builds/${{ env.APP_NAME }}:latest | |
netboxlabs.jfrog.io/obs-builds/${{ env.APP_NAME }}:${{ 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": "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/orb-agent", | |
"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": "major*", "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 install --legacy-peer-deps | |
- name: Release | |
env: | |
SLACK_WEBHOOK: ${{ secrets.SLACK_OBSERVABILITY_RELEASE_WEBHOOK }} | |
run: npx semantic-release --debug |