Skip to content

Commit 739e73c

Browse files
authored
Merge pull request #674 from jmpsec/goreleaser-tagged
Using GoReleaser to build and release osctrl
2 parents 46a351c + d3b45e8 commit 739e73c

File tree

8 files changed

+544
-122
lines changed

8 files changed

+544
-122
lines changed

.github/actions/tagged_release/docker/codesign/action.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
name: "Sign Osctrl Docker images"
2-
description: "Sign Osctrl Docker images"
1+
name: "Sign osctrl Docker images"
2+
description: "Sign osctrl Docker images"
33
inputs:
44
osctrl_component:
55
required: true

.github/workflows/release.yml

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- "v*"
7+
8+
permissions:
9+
contents: write
10+
packages: write
11+
12+
env:
13+
GOLANG_VERSION: 1.24.3
14+
15+
jobs:
16+
goreleaser:
17+
runs-on: ubuntu-latest
18+
steps:
19+
- name: Checkout
20+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
21+
with:
22+
fetch-depth: 0
23+
24+
- name: Set up Go
25+
uses: actions/setup-go@8e57b58e57be52ac95949151e2777ffda8501267 # v5.5.0
26+
with:
27+
go-version: ${{ env.GOLANG_VERSION }}
28+
29+
- name: Set up Docker Buildx
30+
uses: docker/setup-buildx-action@af1b253b8dc984466d22633f04ef341c1520ed2f # v3.11.1
31+
32+
- name: Log in to Docker Hub
33+
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
34+
with:
35+
username: ${{ secrets.DOCKER_HUB_USERNAME }}
36+
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
37+
38+
- name: Run GoReleaser
39+
uses: goreleaser/goreleaser-action@v5.0.0
40+
with:
41+
distribution: goreleaser
42+
version: latest
43+
args: release --clean
44+
env:
45+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
46+
DOCKER_HUB_ORG: ${{ secrets.DOCKER_HUB_ORG }}
47+
48+
# Optional: Sign Docker images with cosign
49+
sign:
50+
needs: goreleaser
51+
runs-on: ubuntu-latest
52+
if: startsWith(github.ref, 'refs/tags/')
53+
steps:
54+
- name: Checkout
55+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
56+
57+
- name: Install cosign
58+
uses: sigstore/cosign-installer@v3.9.2
59+
60+
- name: Log in to Docker Hub
61+
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
62+
with:
63+
username: ${{ secrets.DOCKER_HUB_USERNAME }}
64+
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
65+
66+
- name: Sign Docker images
67+
run: |
68+
for component in tls admin api cli; do
69+
cosign sign --yes docker.io/${{ secrets.DOCKER_HUB_ORG }}/osctrl-$component:${{ github.ref_name }}
70+
cosign verify \
71+
--certificate-identity-regexp="https://github.com/${{ github.repository }}/.github/workflows/.*" \
72+
--certificate-oidc-issuer="https://token.actions.githubusercontent.com" \
73+
docker.io/${{ secrets.DOCKER_HUB_ORG }}/osctrl-$component:${{ github.ref_name }}
74+
done

.github/workflows/test-release.yml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Test Release
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
pull_request:
8+
branches:
9+
- main
10+
11+
permissions:
12+
contents: read
13+
14+
env:
15+
GOLANG_VERSION: 1.24.3
16+
17+
jobs:
18+
test-build:
19+
runs-on: ubuntu-latest
20+
steps:
21+
- name: Checkout
22+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
23+
with:
24+
fetch-depth: 0
25+
26+
- name: Set up Go
27+
uses: actions/setup-go@8e57b58e57be52ac95949151e2777ffda8501267 # v5.5.0
28+
with:
29+
go-version: ${{ env.GOLANG_VERSION }}
30+
31+
- name: Run GoReleaser build
32+
uses: goreleaser/goreleaser-action@v5.0.0
33+
with:
34+
distribution: goreleaser
35+
version: latest
36+
args: build --snapshot --clean --single-target
37+
38+
- name: Upload build artifacts
39+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
40+
with:
41+
name: osctrl-binaries
42+
path: dist/
43+
retention-days: 1

.goreleaser.yml

Lines changed: 242 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,242 @@
1+
# yaml-language-server: $schema=https://goreleaser.com/static/schema.json
2+
# vim: set ts=2 sw=2 tw=0 fo=cnqoj
3+
4+
version: 2
5+
6+
dist: "./dist"
7+
8+
before:
9+
hooks:
10+
- go mod tidy
11+
- go mod download
12+
13+
builds:
14+
- id: osctrl-tls
15+
main: ./cmd/tls
16+
binary: "osctrl-tls-{{ .Os }}-{{ .Arch }}"
17+
no_unique_dist_dir: true
18+
env:
19+
- CGO_ENABLED=0
20+
goos:
21+
- linux
22+
- darwin
23+
goarch:
24+
- amd64
25+
- arm64
26+
ldflags:
27+
- -s -w
28+
- -X main.version={{.Version}}
29+
- -X main.commit={{.Commit}}
30+
- -X main.date={{.Date}}
31+
32+
- id: osctrl-admin
33+
main: ./cmd/admin
34+
binary: "osctrl-admin-{{ .Os }}-{{ .Arch }}"
35+
no_unique_dist_dir: true
36+
env:
37+
- CGO_ENABLED=0
38+
goos:
39+
- linux
40+
- darwin
41+
goarch:
42+
- amd64
43+
- arm64
44+
ldflags:
45+
- -s -w
46+
- -X main.version={{.Version}}
47+
- -X main.commit={{.Commit}}
48+
- -X main.date={{.Date}}
49+
50+
- id: osctrl-api
51+
main: ./cmd/api
52+
binary: "osctrl-api-{{ .Os }}-{{ .Arch }}"
53+
no_unique_dist_dir: true
54+
env:
55+
- CGO_ENABLED=0
56+
goos:
57+
- linux
58+
- darwin
59+
goarch:
60+
- amd64
61+
- arm64
62+
ldflags:
63+
- -s -w
64+
- -X main.version={{.Version}}
65+
- -X main.commit={{.Commit}}
66+
- -X main.date={{.Date}}
67+
68+
- id: osctrl-cli
69+
main: ./cmd/cli
70+
binary: "osctrl-cli-{{ .Os }}-{{ .Arch }}"
71+
no_unique_dist_dir: true
72+
env:
73+
- CGO_ENABLED=0
74+
goos:
75+
- linux
76+
- darwin
77+
- windows
78+
goarch:
79+
- amd64
80+
- arm64
81+
ldflags:
82+
- -s -w
83+
- -X main.version={{.Version}}
84+
- -X main.commit={{.Commit}}
85+
- -X main.date={{.Date}}
86+
87+
archives:
88+
- name_template: >-
89+
{{ .ProjectName }}-
90+
{{- title .Os }}-
91+
{{- if eq .Arch "amd64" }}x86_64
92+
{{- else if eq .Arch "386" }}i386
93+
{{- else }}{{ .Arch }}{{ end }}
94+
files:
95+
- README.md
96+
- LICENSE
97+
- CHANGELOG.md
98+
99+
checksum:
100+
name_template: "checksums.txt"
101+
102+
snapshot: {}
103+
104+
changelog:
105+
sort: asc
106+
filters:
107+
exclude:
108+
- "^docs:"
109+
- "^test:"
110+
- "^ci:"
111+
- Merge pull request
112+
- Merge branch
113+
114+
dockers:
115+
- image_templates:
116+
- "{{ .Env.DOCKER_HUB_ORG }}/osctrl-tls:{{ .Version }}"
117+
- "{{ .Env.DOCKER_HUB_ORG }}/osctrl-tls:latest"
118+
dockerfile: deploy/cicd/docker/Dockerfile-osctrl-tls
119+
use: buildx
120+
build_flag_templates:
121+
- "--platform=linux/amd64"
122+
- "--platform=linux/arm64"
123+
extra_files:
124+
- osctrl-tls-linux-amd64
125+
- osctrl-tls-linux-arm64
126+
127+
- image_templates:
128+
- "{{ .Env.DOCKER_HUB_ORG }}/osctrl-admin:{{ .Version }}"
129+
- "{{ .Env.DOCKER_HUB_ORG }}/osctrl-admin:latest"
130+
dockerfile: deploy/cicd/docker/Dockerfile-osctrl-admin
131+
use: buildx
132+
build_flag_templates:
133+
- "--platform=linux/amd64"
134+
- "--platform=linux/arm64"
135+
extra_files:
136+
- osctrl-admin-linux-amd64
137+
- osctrl-admin-linux-arm64
138+
139+
- image_templates:
140+
- "{{ .Env.DOCKER_HUB_ORG }}/osctrl-api:{{ .Version }}"
141+
- "{{ .Env.DOCKER_HUB_ORG }}/osctrl-api:latest"
142+
dockerfile: deploy/cicd/docker/Dockerfile-osctrl-api
143+
use: buildx
144+
build_flag_templates:
145+
- "--platform=linux/amd64"
146+
- "--platform=linux/arm64"
147+
extra_files:
148+
- osctrl-api-linux-amd64
149+
- osctrl-api-linux-arm64
150+
151+
- image_templates:
152+
- "{{ .Env.DOCKER_HUB_ORG }}/osctrl-cli:{{ .Version }}"
153+
- "{{ .Env.DOCKER_HUB_ORG }}/osctrl-cli:latest"
154+
dockerfile: deploy/cicd/docker/Dockerfile-osctrl-cli
155+
use: buildx
156+
build_flag_templates:
157+
- "--platform=linux/amd64"
158+
- "--platform=linux/arm64"
159+
extra_files:
160+
- osctrl-cli-linux-amd64
161+
- osctrl-cli-linux-arm64
162+
163+
nfpms:
164+
- id: osctrl-tls
165+
maintainer: jmpsec/osctrl
166+
description: osctrl TLS component
167+
homepage: https://github.com/jmpsec/osctrl
168+
license: MIT
169+
formats:
170+
- deb
171+
bindir: /usr/bin
172+
contents:
173+
- src: osctrl-tls-linux-amd64
174+
dst: /usr/bin/osctrl-tls
175+
- src: osctrl-tls-linux-arm64
176+
dst: /usr/bin/osctrl-tls
177+
overrides:
178+
deb:
179+
scripts:
180+
postinstall: deploy/cicd/deb/post-install.sh
181+
preremove: deploy/cicd/deb/pre-remove.sh
182+
183+
- id: osctrl-admin
184+
maintainer: jmpsec/osctrl
185+
description: osctrl Admin component
186+
homepage: https://github.com/jmpsec/osctrl
187+
license: MIT
188+
formats:
189+
- deb
190+
bindir: /usr/bin
191+
contents:
192+
- src: osctrl-admin-linux-amd64
193+
dst: /usr/bin/osctrl-admin
194+
- src: osctrl-admin-linux-arm64
195+
dst: /usr/bin/osctrl-admin
196+
overrides:
197+
deb:
198+
scripts:
199+
postinstall: deploy/cicd/deb/post-install.sh
200+
preremove: deploy/cicd/deb/pre-remove.sh
201+
202+
- id: osctrl-api
203+
maintainer: jmpsec/osctrl
204+
description: osctrl API component
205+
homepage: https://github.com/jmpsec/osctrl
206+
license: MIT
207+
formats:
208+
- deb
209+
bindir: /usr/bin
210+
contents:
211+
- src: osctrl-api-linux-amd64
212+
dst: /usr/bin/osctrl-api
213+
- src: osctrl-api-linux-arm64
214+
dst: /usr/bin/osctrl-api
215+
overrides:
216+
deb:
217+
scripts:
218+
postinstall: deploy/cicd/deb/post-install.sh
219+
preremove: deploy/cicd/deb/pre-remove.sh
220+
221+
- id: osctrl-cli
222+
maintainer: jmpsec/osctrl
223+
description: osctrl CLI component
224+
homepage: https://github.com/jmpsec/osctrl
225+
license: MIT
226+
formats:
227+
- deb
228+
bindir: /usr/bin
229+
contents:
230+
- src: osctrl-cli-linux-amd64
231+
dst: /usr/bin/osctrl-cli
232+
- src: osctrl-cli-linux-arm64
233+
dst: /usr/bin/osctrl-cli
234+
overrides:
235+
deb:
236+
scripts:
237+
postinstall: deploy/cicd/deb/post-install.sh
238+
preremove: deploy/cicd/deb/pre-remove.sh
239+
240+
release:
241+
draft: false
242+
prerelease: false

0 commit comments

Comments
 (0)