diff --git a/.gitignore b/.gitignore index 90d9e0af..fcd23c40 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ *.iml *.code-workspace /zdns -*.log \ No newline at end of file +*.log# Added by goreleaser init: +dist/ diff --git a/.goreleaser.yaml b/.goreleaser.yaml new file mode 100644 index 00000000..82a926a2 --- /dev/null +++ b/.goreleaser.yaml @@ -0,0 +1,52 @@ +# This is an example .goreleaser.yml file with some sensible defaults. +# Make sure to check the documentation at https://goreleaser.com + +# The lines below are called `modelines`. See `:help modeline` +# Feel free to remove those if you don't want/need to use them. +# yaml-language-server: $schema=https://goreleaser.com/static/schema.json +# vim: set ts=2 sw=2 tw=0 fo=cnqoj + +version: 2 + +before: + hooks: + # You may remove this if you don't use go modules. + - go mod tidy + # you may remove this if you don't need go generate + - go generate ./... + +builds: + - env: + - CGO_ENABLED=0 + goos: + - linux + - darwin + +archives: + - format: tar.gz + # this name template makes the OS and Arch compatible with the results of `uname`. + name_template: >- + {{ .ProjectName }}_ + {{- title .Os }}_ + {{- if eq .Arch "amd64" }}x86_64 + {{- else if eq .Arch "386" }}i386 + {{- else }}{{ .Arch }}{{ end }} + {{- if .Arm }}v{{ .Arm }}{{ end }} + # use zip for windows archives + format_overrides: + - goos: windows + format: zip + +changelog: + sort: asc + filters: + exclude: + - "^docs:" + - "^test:" + +release: + footer: >- + + --- + + Released by [GoReleaser](https://github.com/goreleaser/goreleaser). diff --git a/RELEASE.md b/RELEASE.md new file mode 100644 index 00000000..2743cf68 --- /dev/null +++ b/RELEASE.md @@ -0,0 +1,32 @@ +# Releasing a New Version of ZDNS +We use [goreleaser](https://goreleaser.com) to release new versions of ZDNS. To release a new version, follow these steps: + +0. Install `goreleaser`: +```shell +brew install goreleaser/tap/goreleaser +``` + +1. Create a new tag and push to GH: +```shell +git tag -a vA.B.C -m "Release A.B.C" +``` + +2. Test the release: +```shell +goreleaser release --skip-publish --clean +``` + +3. Set GitHub Token (at least configured with `write:packages`) +```shell +export GITHUB_TOKEN="YOUR_GH_TOKEN" +``` +4. Push Tag to Github + Be sure that this tagged commit is what you want to tag. Once you push you shouldn't delete the tagged version. +```shell +git push origin vA.B.C +``` +5. Release! +```shell +goreleaser release --clean +``` +6. Update the [Release Notes](https://github.com/zmap/zdns/releases) with a description of your changes \ No newline at end of file