Skip to content

Commit fa12b03

Browse files
committed
feat: Initial Release with semantic release
1 parent 18744c5 commit fa12b03

8 files changed

+6954
-1
lines changed

.github/workflows/release.yml

+71
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
name: Build and Release
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
pull_request:
8+
branches:
9+
- main
10+
11+
jobs:
12+
release:
13+
runs-on: ubuntu-latest
14+
15+
steps:
16+
# Checkout the code
17+
- name: Checkout code
18+
uses: actions/checkout@v3
19+
20+
# Setup Go
21+
- name: Set up Go
22+
uses: actions/setup-go@v4
23+
with:
24+
go-version: '1.23'
25+
26+
# Install dependencies for semantic-release
27+
- name: Install dependencies
28+
run: npm install
29+
30+
# Cross-compile binaries for multiple architectures
31+
- name: Cross-compile binaries
32+
run: |
33+
mkdir -p release
34+
GOARCHES=("amd64" "arm64")
35+
for arch in "${GOARCHES[@]}"; do
36+
mkdir -p release/linux_$arch/
37+
GOARCH=$arch GOOS=linux go build -o release/linux_$arch/kubermatic-argocd-bridge ./cmd
38+
gzip -c release/linux_$arch/kubermatic-argocd-bridge > release/kubermatic-argocd-bridge_linux_$arch.gz
39+
done
40+
sha256sum release/*.gz > release/checksums.txt
41+
42+
# Build Docker images for multiple architectures using buildx
43+
- name: Set up Docker Buildx
44+
uses: docker/setup-buildx-action@v2
45+
46+
- name: Login to Docker Hub
47+
uses: docker/login-action@v2
48+
with:
49+
registry: 'ghcr.io'
50+
username: ${{ github.actor }}
51+
password: ${{ secrets.GITHUB_TOKEN }}
52+
53+
- name: Build and push Docker images
54+
run: |
55+
docker buildx create --use
56+
docker buildx build -f Dockerfile.release --platform linux/amd64,linux/arm64 \
57+
-t ghcr.io/svalabs/kubermatic-argocd-bridge:${{ github.sha }} \
58+
-t ghcr.io/svalabs/kubermatic-argocd-bridge:latest \
59+
-f Dockerfile.release \
60+
--push .
61+
62+
# Create GitHub release with semantic-release
63+
- name: Semantic Release
64+
env:
65+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
66+
REGISTRY_PASSWORD: ${{ secrets.GITHUB_TOKEN }}
67+
REGISTRY_USER: ${{ github.actor }}
68+
SOURCE_TAG: ${{ github.sha }}
69+
REGISTRY_URL: 'ghcr.io'
70+
REGISTRY_IMAGE: 'svalabs/kubermatic-argocd-bridge'
71+
run: npx semantic-release

.gitignore

+5-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,8 @@
22

33
kubermatic-argocd-bridge
44
kubeconfig
5-
*.tgz
5+
*.tgz
6+
7+
release
8+
9+
node_modules/

.releaserc.json

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
{
2+
"branches": [
3+
"main"
4+
],
5+
"debug": true,
6+
"plugins": [
7+
[
8+
"@semantic-release/commit-analyzer",
9+
{
10+
"preset": "angular",
11+
"releaseRules": [
12+
{
13+
"type": "fix",
14+
"release": "patch"
15+
},
16+
{
17+
"type": "feat",
18+
"release": "minor"
19+
},
20+
{
21+
"type": "minor",
22+
"release": "minor"
23+
},
24+
{
25+
"type": "perf",
26+
"release": "major"
27+
},
28+
{
29+
"type": "major",
30+
"release": "major"
31+
}
32+
]
33+
}
34+
],
35+
[
36+
"@semantic-release/release-notes-generator",
37+
{
38+
"preset": "angular"
39+
}
40+
],
41+
"@semantic-release/changelog",
42+
["@semantic-release/github", {
43+
"assets": [
44+
{"path": "release/*.gz"},
45+
{"path": "release/checksums.txt"}
46+
]
47+
}],
48+
"semantic-release-docker-tag",
49+
50+
["@semantic-release/exec", {
51+
"verifyConditionsCmd": "./verify-release.sh",
52+
"prepareCmd": "./prepare-release.sh ${nextRelease.version} ${branch.name} ${commits.length} ${Date.now()}"
53+
}],
54+
["@semantic-release/git", {
55+
"assets": ["CHANGELOG.md", "chart/values.yaml"],
56+
"message": "chore(release): ${nextRelease.version} [skip ci]"
57+
}]
58+
]
59+
}

Dockerfile.release

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
FROM alpine
2+
ARG TARGETARCH
3+
COPY release/linux_${TARGETARCH}/kubermatic-argocd-bridge /usr/local/bin/kubermatic-argocd-bridge
4+
5+
ENTRYPOINT "/usr/local/bin/kubermatic-argocd-bridge"

0 commit comments

Comments
 (0)