.goreleaser.yml

Summary

Maintainability
Test Coverage
before:
  hooks:
    - make release-prepare

builds:
- main: ./cmd/k8up
  binary: k8up
  env:
  - CGO_ENABLED=0 # this is needed otherwise the Docker image build is faulty
  goarch:
  - amd64
  - arm64
  goos:
  - darwin
  - linux
  - windows

checksum:
  name_template: 'checksums.txt'

snapshot:
  name_template: "{{ incpatch .Version }}-snapshot"

dockers:
- image_templates:
  - "ghcr.io/k8up-io/k8up:v{{ .Version }}-amd64"
  - "quay.io/k8up-io/k8up:v{{ .Version }}-amd64"
  goarch: amd64
  use: buildx
  build_flag_templates:
  - "--platform=linux/amd64"
  extra_files: &dockers_extra_files
  - fetch_restic.sh
  - go.mod
- image_templates:
  - "ghcr.io/k8up-io/k8up:v{{ .Version }}-arm64"
  - "quay.io/k8up-io/k8up:v{{ .Version }}-arm64"
  goarch: arm64
  use: buildx
  build_flag_templates:
  - "--platform=linux/arm64"
  extra_files: *dockers_extra_files

docker_manifests:
- name_template: "ghcr.io/k8up-io/k8up:v{{ .Version }}"
  image_templates: &ghcr
    - "ghcr.io/k8up-io/k8up:v{{ .Version }}-amd64"
    - "ghcr.io/k8up-io/k8up:v{{ .Version }}-arm64"
- name_template: "quay.io/k8up-io/k8up:v{{ .Version }}"
  image_templates: &quay
    - "quay.io/k8up-io/k8up:v{{ .Version }}-amd64"
    - "quay.io/k8up-io/k8up:v{{ .Version }}-arm64"

  # For prereleases, updating `latest` and the floating tags of the major version does not make sense.
  # Only the image for the exact version should be pushed.
- name_template: "{{ if not .Prerelease }}ghcr.io/k8up-io/k8up:v{{ .Major }}{{ end }}"
  image_templates: *ghcr
- name_template: "{{ if not .Prerelease }}quay.io/k8up-io/k8up:v{{ .Major }}{{ end }}"
  image_templates: *quay

- name_template: "{{ if not .Prerelease }}ghcr.io/k8up-io/k8up:latest{{ end }}"
  image_templates: *ghcr
- name_template: "{{ if not .Prerelease }}quay.io/k8up-io/k8up:latest{{ end }}"
  image_templates: *quay

release:
  prerelease: auto
  extra_files:
  - glob: ./k8up-crd*.yaml