mirror of
https://github.com/restic/rest-server.git
synced 2025-10-19 07:33:21 +00:00
244 lines
7.9 KiB
YAML
244 lines
7.9 KiB
YAML
---
|
|
version: 2
|
|
|
|
before:
|
|
# Run a few commands to check the state of things. When anything is changed
|
|
# in files commited to the repo, goreleaser will abort before building
|
|
# anything because the git checkout is dirty.
|
|
hooks:
|
|
# make sure all modules are available
|
|
- go mod download
|
|
# make sure all generated code is up to date
|
|
- go generate ./...
|
|
# check that $VERSION is set
|
|
- test -n "{{ .Env.VERSION }}"
|
|
# make sure the file VERSION contains the latest version (used for build.go)
|
|
- bash -c 'echo "{{ .Env.VERSION }}" > VERSION'
|
|
# make sure that main.go contains the latest version
|
|
- echo sed -i 's/var version = "[^"]*"/var version = "{{ .Env.VERSION }}"/' cmd/rest-server/main.go
|
|
# make sure the file CHANGELOG.md is up to date
|
|
- calens --output CHANGELOG.md
|
|
|
|
# build a single binary
|
|
builds:
|
|
- id: default
|
|
# make sure everything is statically linked by disabling cgo altogether
|
|
env: &build_env
|
|
- CGO_ENABLED=0
|
|
|
|
# set the package for the main binary
|
|
main: ./cmd/rest-server
|
|
|
|
flags:
|
|
&build_flags # don't include any paths to source files in the resulting binary
|
|
- -trimpath
|
|
|
|
mod_timestamp: "{{ .CommitTimestamp }}"
|
|
|
|
ldflags: &build_ldflags # set the version variable in the main package
|
|
- "-s -w -X main.version={{ .Version }}"
|
|
|
|
# list all operating systems and architectures we build binaries for
|
|
goos:
|
|
- linux
|
|
- darwin
|
|
- freebsd
|
|
- netbsd
|
|
- openbsd
|
|
- dragonfly
|
|
- solaris
|
|
|
|
goarch:
|
|
- amd64
|
|
- "386"
|
|
- arm
|
|
- arm64
|
|
- mips
|
|
- mips64
|
|
- mips64le
|
|
- ppc64
|
|
- ppc64le
|
|
goarm:
|
|
- "6"
|
|
- "7"
|
|
|
|
- id: windows-only
|
|
env: *build_env
|
|
main: ./cmd/rest-server
|
|
flags: *build_flags
|
|
mod_timestamp: "{{ .CommitTimestamp }}"
|
|
ldflags: *build_ldflags
|
|
goos:
|
|
- windows
|
|
goarch:
|
|
- amd64
|
|
- "386"
|
|
- arm
|
|
- arm64
|
|
|
|
# configure the resulting archives to create
|
|
archives:
|
|
- id: default
|
|
builds: [default, windows-only]
|
|
format: tar.gz
|
|
# package a directory which contains the source file
|
|
wrap_in_directory: true
|
|
|
|
builds_info: &archive_file_info
|
|
owner: root
|
|
group: root
|
|
mtime: "{{ .CommitDate }}"
|
|
mode: 0644
|
|
|
|
# add these files to all archives
|
|
files: &archive_files
|
|
- src: LICENSE
|
|
dst: LICENSE
|
|
info: *archive_file_info
|
|
- src: README.md
|
|
dst: README.md
|
|
info: *archive_file_info
|
|
- src: CHANGELOG.md
|
|
dst: CHANGELOG.md
|
|
info: *archive_file_info
|
|
|
|
- id: windows-only
|
|
builds: [windows-only]
|
|
formats: [zip]
|
|
wrap_in_directory: true
|
|
builds_info: *archive_file_info
|
|
files: *archive_files
|
|
|
|
# also build an archive of the source code
|
|
source:
|
|
enabled: true
|
|
|
|
# build a file containing the SHA256 hashes
|
|
checksum:
|
|
name_template: "SHA256SUMS"
|
|
|
|
# sign the checksum file
|
|
signs:
|
|
- artifacts: checksum
|
|
signature: "${artifact}.asc"
|
|
args:
|
|
- "--armor"
|
|
- "--output"
|
|
- "${signature}"
|
|
- "--detach-sign"
|
|
- "${artifact}"
|
|
|
|
# configure building the rest-server docker image
|
|
dockers:
|
|
- image_templates:
|
|
- restic/rest-server:{{ .Version }}-amd64
|
|
build_flag_templates:
|
|
- "--platform=linux/amd64"
|
|
- "--pull"
|
|
- "--label=org.opencontainers.image.created={{.Date}}"
|
|
- "--label=org.opencontainers.image.title={{.ProjectName}}"
|
|
- "--label=org.opencontainers.image.source=https://github.com/restic/{{ .ProjectName }}"
|
|
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
|
|
- "--label=org.opencontainers.image.version={{.Version}}"
|
|
- "--label=org.opencontainers.image.licenses=BSD-2-Clause"
|
|
use: buildx
|
|
dockerfile: "Dockerfile.goreleaser"
|
|
extra_files: &extra_files
|
|
- docker/create_user
|
|
- docker/delete_user
|
|
- docker/entrypoint.sh
|
|
- image_templates:
|
|
- restic/rest-server:{{ .Version }}-i386
|
|
goarch: "386"
|
|
build_flag_templates:
|
|
- "--platform=linux/386"
|
|
- "--pull"
|
|
- "--label=org.opencontainers.image.created={{.Date}}"
|
|
- "--label=org.opencontainers.image.title={{.ProjectName}}"
|
|
- "--label=org.opencontainers.image.source=https://github.com/restic/{{ .ProjectName }}"
|
|
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
|
|
- "--label=org.opencontainers.image.version={{.Version}}"
|
|
- "--label=org.opencontainers.image.licenses=BSD-2-Clause"
|
|
use: buildx
|
|
dockerfile: "Dockerfile.goreleaser"
|
|
extra_files: *extra_files
|
|
- image_templates:
|
|
- restic/rest-server:{{ .Version }}-arm32v6
|
|
goarch: arm
|
|
goarm: 6
|
|
build_flag_templates:
|
|
- "--platform=linux/arm/v6"
|
|
- "--pull"
|
|
- "--label=org.opencontainers.image.created={{.Date}}"
|
|
- "--label=org.opencontainers.image.title={{.ProjectName}}"
|
|
- "--label=org.opencontainers.image.source=https://github.com/restic/{{ .ProjectName }}"
|
|
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
|
|
- "--label=org.opencontainers.image.version={{.Version}}"
|
|
- "--label=org.opencontainers.image.licenses=BSD-2-Clause"
|
|
use: buildx
|
|
dockerfile: "Dockerfile.goreleaser"
|
|
extra_files: *extra_files
|
|
- image_templates:
|
|
- restic/rest-server:{{ .Version }}-arm32v7
|
|
goarch: arm
|
|
goarm: 7
|
|
build_flag_templates:
|
|
- "--platform=linux/arm/v7"
|
|
- "--pull"
|
|
- "--label=org.opencontainers.image.created={{.Date}}"
|
|
- "--label=org.opencontainers.image.title={{.ProjectName}}"
|
|
- "--label=org.opencontainers.image.source=https://github.com/restic/{{ .ProjectName }}"
|
|
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
|
|
- "--label=org.opencontainers.image.version={{.Version}}"
|
|
- "--label=org.opencontainers.image.licenses=BSD-2-Clause"
|
|
use: buildx
|
|
dockerfile: "Dockerfile.goreleaser"
|
|
extra_files: *extra_files
|
|
- image_templates:
|
|
- restic/rest-server:{{ .Version }}-arm64v8
|
|
goarch: arm64
|
|
build_flag_templates:
|
|
- "--platform=linux/arm64/v8"
|
|
- "--pull"
|
|
- "--label=org.opencontainers.image.created={{.Date}}"
|
|
- "--label=org.opencontainers.image.title={{.ProjectName}}"
|
|
- "--label=org.opencontainers.image.source=https://github.com/restic/{{ .ProjectName }}"
|
|
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
|
|
- "--label=org.opencontainers.image.version={{.Version}}"
|
|
- "--label=org.opencontainers.image.licenses=BSD-2-Clause"
|
|
use: buildx
|
|
dockerfile: "Dockerfile.goreleaser"
|
|
extra_files: *extra_files
|
|
- image_templates:
|
|
- restic/rest-server:{{ .Version }}-ppc64le
|
|
goarch: ppc64le
|
|
build_flag_templates:
|
|
- "--platform=linux/ppc64le"
|
|
- "--pull"
|
|
- "--label=org.opencontainers.image.created={{.Date}}"
|
|
- "--label=org.opencontainers.image.title={{.ProjectName}}"
|
|
- "--label=org.opencontainers.image.source=https://github.com/restic/{{ .ProjectName }}"
|
|
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
|
|
- "--label=org.opencontainers.image.version={{.Version}}"
|
|
- "--label=org.opencontainers.image.licenses=BSD-2-Clause"
|
|
use: buildx
|
|
dockerfile: "Dockerfile.goreleaser"
|
|
extra_files: *extra_files
|
|
|
|
docker_manifests:
|
|
- name_template: "restic/rest-server:{{ .Version }}"
|
|
image_templates:
|
|
- "restic/rest-server:{{ .Version }}-amd64"
|
|
- "restic/rest-server:{{ .Version }}-i386"
|
|
- "restic/rest-server:{{ .Version }}-arm32v6"
|
|
- "restic/rest-server:{{ .Version }}-arm32v7"
|
|
- "restic/rest-server:{{ .Version }}-arm64v8"
|
|
- "restic/rest-server:{{ .Version }}-ppc64le"
|
|
- name_template: "restic/rest-server:latest"
|
|
image_templates:
|
|
- "restic/rest-server:{{ .Version }}-amd64"
|
|
- "restic/rest-server:{{ .Version }}-i386"
|
|
- "restic/rest-server:{{ .Version }}-arm32v6"
|
|
- "restic/rest-server:{{ .Version }}-arm32v7"
|
|
- "restic/rest-server:{{ .Version }}-arm64v8"
|
|
- "restic/rest-server:{{ .Version }}-ppc64le"
|