ci(release): 🚀 Add release automation with GoReleaser
Implements automated release pipeline using GitHub Actions and GoReleaser. - Configures GoReleaser to build for multiple platforms (linux/darwin/windows) - Sets up GPG signing for release artifacts - Configures Gitea as release target with custom API endpoints - Implements semantic changelog generation with categorized groups - Adds GitHub Actions workflow triggered on version tags
This commit is contained in:
parent
35f415f875
commit
2dfb04798d
3 changed files with 111 additions and 0 deletions
34
.github/workflows/release.yaml
vendored
Normal file
34
.github/workflows/release.yaml
vendored
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
name: ci
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- v*
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
goreleaser:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- name: Set up Go
|
||||||
|
uses: actions/setup-go@v6
|
||||||
|
with:
|
||||||
|
go-version: ">=1.25.1"
|
||||||
|
- name: Test code
|
||||||
|
run: make test
|
||||||
|
- name: Import GPG key
|
||||||
|
id: import_gpg
|
||||||
|
uses: https://github.com/crazy-max/ghaction-import-gpg@v6
|
||||||
|
with:
|
||||||
|
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
|
||||||
|
passphrase: ${{ secrets.GPG_PASSPHRASE }}
|
||||||
|
- name: Run GoReleaser
|
||||||
|
uses: https://github.com/goreleaser/goreleaser-action@v6
|
||||||
|
env:
|
||||||
|
GITEA_TOKEN: ${{ secrets.PACKAGES_TOKEN }}
|
||||||
|
GPG_FINGERPRINT: ${{ steps.import_gpg.outputs.fingerprint }}
|
||||||
|
with:
|
||||||
|
args: release --clean
|
||||||
77
.goreleaser.yaml
Normal file
77
.goreleaser.yaml
Normal file
|
|
@ -0,0 +1,77 @@
|
||||||
|
version: 2
|
||||||
|
|
||||||
|
before:
|
||||||
|
hooks:
|
||||||
|
- go mod tidy
|
||||||
|
- go generate ./...
|
||||||
|
|
||||||
|
builds:
|
||||||
|
- env:
|
||||||
|
- CGO_ENABLED=0
|
||||||
|
goos:
|
||||||
|
- linux
|
||||||
|
- darwin
|
||||||
|
- windows
|
||||||
|
goarch:
|
||||||
|
- amd64
|
||||||
|
- arm64
|
||||||
|
|
||||||
|
archives:
|
||||||
|
- formats: [tar.gz]
|
||||||
|
# this name template makes the OS and Arch compatible with the results of `uname`.
|
||||||
|
name_template: >-
|
||||||
|
{{ .ProjectName }}_
|
||||||
|
{{- title .Os }}_
|
||||||
|
{{- if eq .Arch "amd64" }}x86_64
|
||||||
|
{{- else if eq .Arch "386" }}i386
|
||||||
|
{{- else }}{{ .Arch }}{{ end }}
|
||||||
|
{{- if .Arm }}v{{ .Arm }}{{ end }}
|
||||||
|
# use zip for windows archives
|
||||||
|
format_overrides:
|
||||||
|
- goos: windows
|
||||||
|
formats: [zip]
|
||||||
|
|
||||||
|
signs:
|
||||||
|
- artifacts: checksum
|
||||||
|
cmd: gpg
|
||||||
|
args:
|
||||||
|
- "--batch"
|
||||||
|
- "-u"
|
||||||
|
- "{{ .Env.GPG_FINGERPRINT }}"
|
||||||
|
- "--output"
|
||||||
|
- "${signature}"
|
||||||
|
- "--detach-sign"
|
||||||
|
- "${artifact}"
|
||||||
|
|
||||||
|
changelog:
|
||||||
|
abbrev: 10
|
||||||
|
filters:
|
||||||
|
exclude:
|
||||||
|
- "^docs:"
|
||||||
|
- "^test:"
|
||||||
|
format: "{{.SHA}}: {{.Message}}"
|
||||||
|
groups:
|
||||||
|
- title: Features
|
||||||
|
regexp: '^.*?feat(\([[:word:]]+\))??!?:.+$'
|
||||||
|
order: 0
|
||||||
|
- title: "Bug fixes"
|
||||||
|
regexp: '^.*?fix(\([[:word:]]+\))??!?:.+$'
|
||||||
|
order: 1
|
||||||
|
- title: "Chores"
|
||||||
|
regexp: '^.*?chore(\([[:word:]]+\))??!?:.+$'
|
||||||
|
order: 2
|
||||||
|
- title: Others
|
||||||
|
order: 999
|
||||||
|
sort: asc
|
||||||
|
|
||||||
|
release:
|
||||||
|
gitea:
|
||||||
|
owner: DevFW-CICD
|
||||||
|
name: garm-provider-edge-connect
|
||||||
|
|
||||||
|
force_token: gitea
|
||||||
|
gitea_urls:
|
||||||
|
api: https://edp.buildth.ing/api/v1
|
||||||
|
download: https://edp.buildth.ing
|
||||||
|
# set to true if you use a self-signed certificate
|
||||||
|
skip_tls_verify: false
|
||||||
BIN
public.gpg
Normal file
BIN
public.gpg
Normal file
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue