listmonk/.goreleaser.yml
Chinmay Pai 3663a8b10b
feat: add multiarch docker build support (#1344)
* feat: add multiarch docker build support

adds docker build support for the following platforms:
- amd64 (default)
- arm64v8
- armv6
- armv7

also adds GOOS and GOARCH information to the buildString

utilizes docker manifest to store image architecture metadata

* chore: update goreleaser action to v4

* chore: update docker login action to v2

* chore: format buildstring
2023-07-18 11:16:25 +05:30

163 lines
5.9 KiB
YAML

env:
- GO111MODULE=on
- CGO_ENABLED=0
before:
hooks:
- make build-frontend
builds:
- binary: listmonk
main: ./cmd
goos:
- windows
- darwin
- linux
- freebsd
- openbsd
- netbsd
goarch:
- amd64
- arm64
- arm
goarm:
- 6
- 7
ldflags:
- -s -w -X "main.buildString={{ .Tag }} ({{ .ShortCommit }} {{ .Date }}, {{ .Os }}/{{ .Arch }})" -X "main.versionString={{ .Tag }}"
hooks:
# stuff executables with static assets.
post: make pack-bin BIN={{ .Path }}
archives:
- format: tar.gz
files:
- README.md
- LICENSE
dockers:
- use: buildx
goos: linux
goarch: amd64
ids:
- listmonk
image_templates:
- "listmonk/{{ .ProjectName }}:latest-amd64"
- "listmonk/{{ .ProjectName }}:{{ .Tag }}-amd64"
- "ghcr.io/knadh/{{ .ProjectName }}:latest-amd64"
- "ghcr.io/knadh/{{ .ProjectName }}:{{ .Tag }}-amd64"
build_flag_templates:
- --platform=linux/amd64
- --label=org.opencontainers.image.title={{ .ProjectName }}
- --label=org.opencontainers.image.description={{ .ProjectName }}
- --label=org.opencontainers.image.url=https://github.com/knadh/{{ .ProjectName }}
- --label=org.opencontainers.image.source=https://github.com/knadh/{{ .ProjectName }}
- --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=AGPL-3.0
dockerfile: Dockerfile
extra_files:
- config.toml.sample
- config-demo.toml
- use: buildx
goos: linux
goarch: arm64
ids:
- listmonk
image_templates:
- "listmonk/{{ .ProjectName }}:latest-arm64v8"
- "listmonk/{{ .ProjectName }}:{{ .Tag }}-arm64v8"
- "ghcr.io/knadh/{{ .ProjectName }}:latest-arm64v8"
- "ghcr.io/knadh/{{ .ProjectName }}:{{ .Tag }}-arm64v8"
build_flag_templates:
- --platform=linux/arm64/v8
- --label=org.opencontainers.image.title={{ .ProjectName }}
- --label=org.opencontainers.image.description={{ .ProjectName }}
- --label=org.opencontainers.image.url=https://github.com/knadh/{{ .ProjectName }}
- --label=org.opencontainers.image.source=https://github.com/knadh/{{ .ProjectName }}
- --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=AGPL-3.0
dockerfile: Dockerfile
extra_files:
- config.toml.sample
- config-demo.toml
- use: buildx
goos: linux
goarch: arm
goarm: 6
ids:
- listmonk
image_templates:
- "listmonk/{{ .ProjectName }}:latest-armv6"
- "listmonk/{{ .ProjectName }}:{{ .Tag }}-armv6"
- "ghcr.io/knadh/{{ .ProjectName }}:latest-armv6"
- "ghcr.io/knadh/{{ .ProjectName }}:{{ .Tag }}-armv6"
build_flag_templates:
- --platform=linux/arm/v6
- --label=org.opencontainers.image.title={{ .ProjectName }}
- --label=org.opencontainers.image.description={{ .ProjectName }}
- --label=org.opencontainers.image.url=https://github.com/knadh/{{ .ProjectName }}
- --label=org.opencontainers.image.source=https://github.com/knadh/{{ .ProjectName }}
- --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=AGPL-3.0
dockerfile: Dockerfile
extra_files:
- config.toml.sample
- config-demo.toml
- use: buildx
goos: linux
goarch: arm
goarm: 7
ids:
- listmonk
image_templates:
- "listmonk/{{ .ProjectName }}:latest-armv7"
- "listmonk/{{ .ProjectName }}:{{ .Tag }}-armv7"
- "ghcr.io/knadh/{{ .ProjectName }}:latest-armv7"
- "ghcr.io/knadh/{{ .ProjectName }}:{{ .Tag }}-armv7"
build_flag_templates:
- --platform=linux/arm/v7
- --label=org.opencontainers.image.title={{ .ProjectName }}
- --label=org.opencontainers.image.description={{ .ProjectName }}
- --label=org.opencontainers.image.url=https://github.com/knadh/{{ .ProjectName }}
- --label=org.opencontainers.image.source=https://github.com/knadh/{{ .ProjectName }}
- --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=AGPL-3.0
dockerfile: Dockerfile
extra_files:
- config.toml.sample
- config-demo.toml
docker_manifests:
- name_template: listmonk/{{ .ProjectName }}:latest
image_templates:
- listmonk/{{ .ProjectName }}:latest-amd64
- listmonk/{{ .ProjectName }}:latest-arm64v8
- listmonk/{{ .ProjectName }}:latest-armv6
- listmonk/{{ .ProjectName }}:latest-armv7
- name_template: listmonk/{{ .ProjectName }}:{{ .Tag }}
image_templates:
- listmonk/{{ .ProjectName }}:{{ .Tag }}-amd64
- listmonk/{{ .ProjectName }}:{{ .Tag }}-arm64v8
- listmonk/{{ .ProjectName }}:{{ .Tag }}-armv6
- listmonk/{{ .ProjectName }}:{{ .Tag }}-armv7
- name_template: ghcr.io/knadh/{{ .ProjectName }}:latest
image_templates:
- ghcr.io/knadh/{{ .ProjectName }}:latest-amd64
- ghcr.io/knadh/{{ .ProjectName }}:latest-arm64v8
- ghcr.io/knadh/{{ .ProjectName }}:latest-armv6
- ghcr.io/knadh/{{ .ProjectName }}:latest-armv7
- name_template: ghcr.io/knadh/{{ .ProjectName }}:{{ .Tag }}
image_templates:
- ghcr.io/knadh/{{ .ProjectName }}:{{ .Tag }}-amd64
- ghcr.io/knadh/{{ .ProjectName }}:{{ .Tag }}-arm64v8
- ghcr.io/knadh/{{ .ProjectName }}:{{ .Tag }}-armv6
- ghcr.io/knadh/{{ .ProjectName }}:{{ .Tag }}-armv7