dnscontrol/.goreleaser.yml

207 lines
7 KiB
YAML
Raw Normal View History

2024-01-27 03:14:23 +08:00
# yaml-language-server: $schema=https://goreleaser.com/static/schema.json
project_name: dnscontrol
2024-06-11 01:13:12 +08:00
version: 2
builds:
-
id: build
env:
- CGO_ENABLED=0
- GO111MODULE=on
goos:
- linux
- windows
- darwin
- freebsd
# List of combinations of GOOS + GOARCH + GOARM to ignore.
ignore:
- goos: linux
goarch: "386"
- goos: windows
goarch: "386"
- goos: freebsd
goarch: "386"
ldflags:
2024-01-04 23:46:36 +08:00
- -linkmode=internal -s -w
- -X main.version={{ .Version }}
before:
hooks:
- go fmt ./...
- go mod tidy
- go generate ./...
changelog:
sort: asc
use: github
groups:
- title: 'Breaking changes:'
regexp: "(?i)^.*breaking[(\\w)]*:+.*$"
order: 0
- title: 'Major features:'
regexp: "(?i)^.*(major|new provider|feature)[(\\w)]*:+.*$"
order: 1
- title: 'Provider-specific changes:'
regexp: "(?i)((akamaiedge|autodns|axfrd|azure|azure_private_dns|bind|bunnydns|cloudflare|cloudflareapi_old|cloudns|cnr|cscglobal|desec|digitalocean|dnsimple|dnsmadeeasy|doh|domainnameshop|dynadot|easyname|exoscale|gandi|gcloud|gcore|hedns|hetzner|hexonet|hostingde|huaweicloud|inwx|linode|loopia|luadns|msdns|mythicbeasts|namecheap|namedotcom|netcup|netlify|ns1|opensrs|oracle|ovh|packetframe|porkbun|powerdns|realtimeregister|route53|rwth|sakuracloud|softlayer|transip|vultr).*:)+.*"
order: 2
- title: 'Documentation:'
regexp: "(?i)^.*(docs)[(\\w)]*:+.*$"
order: 3
- title: 'CI/CD:'
regexp: "(?i)^.*(build|ci|cicd)[(\\w)]*:+.*$"
order: 4
- title: 'Dependencies:'
2023-12-05 01:31:07 +08:00
regexp: "(?i)^.*Build\\(deps\\)*:+.*$|(?i)^.*update deps+.*$"
order: 5
- title: 'Other changes and improvements:'
order: 9
2022-09-06 20:21:57 +08:00
- title: 'Deprecation warnings:'
regexp: "(?i)^.*Deprecate[(\\w)]*:+.*$"
order: 10
filters:
exclude:
- '^test:'
- Merge pull request
- Merge branch
archives:
- format_overrides:
- goos: windows
format: zip
universal_binaries:
-
replace: true
id: build
nfpms:
- id: packages_rpm
file_name_template: >-
{{ .ProjectName }}-
{{- .Version }}.
{{- if eq .Arch "386" }}i386
{{- else if eq .Arch "amd64" }}x86_64
{{- else }}{{ .Arch }}{{ end }}
homepage: https://docs.dnscontrol.org/
description: "DNSControl: Infrastructure as Code for DNS Zones"
maintainer: 'Tom Limoncelli <tlimoncelli@stackoverflow.com>'
license: MIT
formats:
- rpm
- id: packages_deb
file_name_template: >-
{{ .ProjectName }}-
{{- .Version }}.
{{- if eq .Arch "386" }}i386
{{- else }}{{ .Arch }}{{ end }}
homepage: https://docs.dnscontrol.org/
description: "DNSControl: Infrastructure as Code for DNS Zones"
maintainer: 'Tom Limoncelli <tlimoncelli@stackoverflow.com>'
license: MIT
formats:
- deb
dockers:
- image_templates:
- &amd_image "stackexchange/{{.ProjectName}}:{{ .Version }}-amd64"
- &amd_image_ghcr "ghcr.io/stackexchange/{{.ProjectName}}:{{ .Version }}-amd64"
goos: linux
goarch: amd64
use: buildx
ids:
- build
build_flag_templates:
- "--pull"
- "--platform=linux/amd64"
- "--label=org.opencontainers.image.created={{ .Date }}"
- "--label=org.opencontainers.image.name={{ .ProjectName }}"
- "--label=org.opencontainers.image.revision={{ .FullCommit }}"
- "--label=org.opencontainers.image.version={{ .Version }}"
- "--label=org.opencontainers.image.source={{ .GitURL }}"
- image_templates:
- &arm_image "stackexchange/{{.ProjectName}}:{{ .Version }}-arm64"
- &arm_image_ghcr "ghcr.io/stackexchange/{{.ProjectName}}:{{ .Version }}-arm64"
goos: linux
goarch: arm64
use: buildx
ids:
- build
build_flag_templates:
- "--pull"
- "--platform=linux/arm64"
- "--label=org.opencontainers.image.created={{ .Date }}"
- "--label=org.opencontainers.image.name={{ .ProjectName }}"
- "--label=org.opencontainers.image.revision={{ .FullCommit }}"
- "--label=org.opencontainers.image.version={{ .Version }}"
- "--label=org.opencontainers.image.source={{ .GitURL }}"
docker_manifests:
- name_template: "stackexchange/{{.ProjectName}}:{{ .Version }}"
image_templates:
- *amd_image
- *arm_image
- name_template: "ghcr.io/stackexchange/{{.ProjectName}}:{{ .Version }}"
image_templates:
- *amd_image_ghcr
- *arm_image_ghcr
- name_template: "stackexchange/{{.ProjectName}}:latest"
skip_push: auto
image_templates:
- *amd_image
- *arm_image
- name_template: "ghcr.io/stackexchange/{{.ProjectName}}:latest"
skip_push: auto
image_templates:
- *amd_image_ghcr
- *arm_image_ghcr
checksum:
name_template: 'checksums.txt'
snapshot:
version_template: "{{ incpatch .Version }}-next"
release:
draft: true
prerelease: auto
mode: append
footer: |
## Deprecation warnings
> [!WARNING]
> - **REV() will switch from RFC2317 to RFC4183 in v5.0.** This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
> - **MSDNS maintainer needed!** Without a new volunteer, this DNS provider will lose support after April 2025. See https://github.com/StackExchange/dnscontrol/issues/2878
> - **NAMEDOTCOM and SOFTLAYER need maintainers!** These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.
> - **get-certs/ACME support is frozen and will be removed without notice between now and July 2025.** It has been unsupported since December 2022. If you don't use this feature, do not start. If you do use this feature, migrate ASAP. See discussion in [issues/1400](https://github.com/StackExchange/dnscontrol/issues/1400)
## Install
#### macOS and Linux
##### Install with [Homebrew](https://brew.sh) (recommended)
```shell
brew install dnscontrol
```
##### Using with [Docker](https://www.docker.com)
You can use the Docker image from [Docker hub](https://hub.docker.com/r/stackexchange/dnscontrol/) or [GitHub Container Registry](https://github.com/stackexchange/dnscontrol/pkgs/container/dnscontrol).
```shell
docker run --rm -it -v "$(pwd):/dns" ghcr.io/stackexchange/dnscontrol preview
```
#### Anywhere else
Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.
Or, if you have Go installed, you can install the latest version of DNSControl with the following command:
```shell
go install github.com/StackExchange/dnscontrol/v4@main
```
## Update
Update to the latest version depends on how you choose to install `dnscontrol` on your machine.
#### Update with [Homebrew](https://brew.sh)
```shell
brew upgrade dnscontrol
```
Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.