3663a8b10b
* 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
163 lines
5.9 KiB
YAML
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
|