200 lines
5.3 KiB
YAML
200 lines
5.3 KiB
YAML
# yaml-language-server: $schema=https://goreleaser.com/static/schema.json
|
|
version: 2
|
|
|
|
project_name: probod
|
|
|
|
before:
|
|
hooks:
|
|
- make @probo/emails @probo/console @probo/trust
|
|
|
|
builds:
|
|
- id: probod
|
|
main: ./cmd/probod/main.go
|
|
binary: probod
|
|
ldflags:
|
|
- -s -w
|
|
- -X 'main.version={{.Version}}'
|
|
- -X 'main.env=prod'
|
|
gcflags:
|
|
- -e
|
|
env:
|
|
- CGO_ENABLED=0
|
|
goos:
|
|
- windows
|
|
- darwin
|
|
goarch:
|
|
- amd64
|
|
- arm64
|
|
ignore:
|
|
- goos: windows
|
|
goarch: arm64
|
|
# Docker-specific builds for Linux only
|
|
- id: probod-docker
|
|
main: ./cmd/probod/main.go
|
|
binary: probod
|
|
ldflags:
|
|
- -s -w
|
|
- -X 'main.version={{.Version}}'
|
|
- -X 'main.env=prod'
|
|
gcflags:
|
|
- -e
|
|
env:
|
|
- CGO_ENABLED=0
|
|
goos:
|
|
- linux
|
|
goarch:
|
|
- amd64
|
|
- arm64
|
|
|
|
archives:
|
|
- 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 }}
|
|
files:
|
|
- README.md
|
|
- LICENSE
|
|
- CHANGELOG.md
|
|
|
|
checksum:
|
|
name_template: "checksums.txt"
|
|
|
|
signs:
|
|
- cmd: sh
|
|
env:
|
|
- COSIGN_EXPERIMENTAL=1
|
|
certificate: "${artifact}.pem"
|
|
args:
|
|
- -c
|
|
- |
|
|
if [ "{{ .IsSnapshot }}" = "true" ]; then
|
|
echo "Skipping signing (snapshot: {{ .IsSnapshot }})"
|
|
else
|
|
cosign sign-blob --output-certificate="${certificate}" --output-signature="${signature}" "${artifact}" --yes
|
|
fi
|
|
artifacts: checksum
|
|
output: true
|
|
|
|
docker_manifests:
|
|
- name_template: "ghcr.io/getprobo/probo:{{ .Tag }}"
|
|
image_templates:
|
|
- "ghcr.io/getprobo/probo:{{ .Tag }}-amd64"
|
|
- "ghcr.io/getprobo/probo:{{ .Tag }}-arm64"
|
|
skip_push: "{{ .IsSnapshot }}"
|
|
- name_template: "ghcr.io/getprobo/probo:latest"
|
|
image_templates:
|
|
- "ghcr.io/getprobo/probo:latest-amd64"
|
|
- "ghcr.io/getprobo/probo:latest-arm64"
|
|
skip_push: "{{ .IsSnapshot }}"
|
|
|
|
docker_signs:
|
|
- id: images
|
|
cmd: sh
|
|
env:
|
|
- COSIGN_EXPERIMENTAL=1
|
|
artifacts: images
|
|
output: true
|
|
args:
|
|
- -c
|
|
- |
|
|
if [ "{{ .IsSnapshot }}" = "true" ]; then
|
|
echo "Skipping Docker image signing (snapshot: {{ .IsSnapshot }})"
|
|
else
|
|
cosign sign "${artifact}@${digest}" --yes
|
|
fi
|
|
- id: manifests
|
|
cmd: sh
|
|
env:
|
|
- COSIGN_EXPERIMENTAL=1
|
|
artifacts: manifests
|
|
output: true
|
|
args:
|
|
- -c
|
|
- |
|
|
if [ "{{ .IsSnapshot }}" = "true" ]; then
|
|
echo "Skipping Docker manifest signing (snapshot: {{ .IsSnapshot }})"
|
|
else
|
|
cosign sign "${artifact}@${digest}" --yes
|
|
fi
|
|
|
|
dockers:
|
|
- image_templates:
|
|
- "ghcr.io/getprobo/probo:{{ .Tag }}-amd64"
|
|
- "ghcr.io/getprobo/probo:latest-amd64"
|
|
dockerfile: Dockerfile
|
|
use: buildx
|
|
build_flag_templates:
|
|
- "--platform=linux/amd64"
|
|
- "--label=org.opencontainers.image.title={{.ProjectName}}"
|
|
- "--label=org.opencontainers.image.description=Probo compliance management platform"
|
|
- "--label=org.opencontainers.image.url=https://github.com/getprobo/probo"
|
|
- "--label=org.opencontainers.image.source=https://github.com/getprobo/probo"
|
|
- "--label=org.opencontainers.image.version={{.Version}}"
|
|
- '--label=org.opencontainers.image.created={{time "2006-01-02T15:04:05Z07:00"}}'
|
|
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
|
|
- "--label=org.opencontainers.image.licenses=MIT"
|
|
extra_files:
|
|
- entrypoint.sh
|
|
# Use the Docker-specific build with AMD64 filtering
|
|
ids:
|
|
- probod-docker
|
|
goos: linux
|
|
goarch: amd64
|
|
skip_push: "{{ .IsSnapshot }}"
|
|
- image_templates:
|
|
- "ghcr.io/getprobo/probo:{{ .Tag }}-arm64"
|
|
- "ghcr.io/getprobo/probo:latest-arm64"
|
|
dockerfile: Dockerfile
|
|
use: buildx
|
|
build_flag_templates:
|
|
- "--platform=linux/arm64"
|
|
- "--label=org.opencontainers.image.title={{.ProjectName}}"
|
|
- "--label=org.opencontainers.image.description=Probo compliance management platform"
|
|
- "--label=org.opencontainers.image.url=https://github.com/getprobo/probo"
|
|
- "--label=org.opencontainers.image.source=https://github.com/getprobo/probo"
|
|
- "--label=org.opencontainers.image.version={{.Version}}"
|
|
- '--label=org.opencontainers.image.created={{time "2006-01-02T15:04:05Z07:00"}}'
|
|
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
|
|
- "--label=org.opencontainers.image.licenses=MIT"
|
|
extra_files:
|
|
- entrypoint.sh
|
|
# Use the Docker-specific build with ARM64 filtering
|
|
ids:
|
|
- probod-docker
|
|
goos: linux
|
|
goarch: arm64
|
|
skip_push: "{{ .IsSnapshot }}"
|
|
|
|
changelog:
|
|
sort: asc
|
|
filters:
|
|
exclude:
|
|
- "^docs:"
|
|
- "^test:"
|
|
- "^chore:"
|
|
- "^style:"
|
|
- "^refactor:"
|
|
- "^ci:"
|
|
- "^build:"
|
|
- Merge pull request
|
|
- Merge branch
|
|
- go mod tidy
|
|
|
|
release:
|
|
draft: false
|
|
prerelease: auto
|
|
mode: replace
|
|
header: |
|
|
## Changes in {{ .Tag }}
|
|
footer: |
|
|
## Docker Images
|
|
- `ghcr.io/getprobo/probo:{{ .Tag }}` (multi-arch: linux/amd64, linux/arm64)
|
|
- `ghcr.io/getprobo/probo:latest` (multi-arch: linux/amd64, linux/arm64)
|
|
|
|
### Architecture-specific images
|
|
- `ghcr.io/getprobo/probo:{{ .Tag }}-amd64`
|
|
- `ghcr.io/getprobo/probo:{{ .Tag }}-arm64`
|