summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/release.yml53
-rw-r--r--.gitignore5
-rw-r--r--.goreleaser.yml66
3 files changed, 124 insertions, 0 deletions
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..250792c
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,53 @@
+name: Release
+
+on:
+ push:
+ tags:
+ - 'v*.*.*'
+
+jobs:
+ release:
+ name: Release
+ strategy:
+ matrix:
+ os: [ ubuntu-latest ]
+ go-version: [ 1.14.x ]
+ runs-on: ${{ matrix.os }}
+
+ steps:
+ - name: Install Go
+ uses: actions/setup-go@v1
+ with:
+ go-version: ${{ matrix.go-version }}
+
+ - name: Checkout code
+ uses: actions/checkout@v2
+
+ # So GoReleaser can generate the changelog properly
+ - name: Unshallowify the repo clone
+ run: git fetch --prune --unshallow
+
+ - name: Print Go version and environment
+ id: vars
+ run: |
+ printf "Using go at: $(which go)\n"
+ printf "Go version: $(go version)\n"
+ printf "\n\nGo environment:\n\n"
+ go env
+ printf "\n\nSystem environment:\n\n"
+ env
+
+ # https://github.community/t5/GitHub-Actions/How-to-get-just-the-tag-name/m-p/32167/highlight/true#M1027
+ - name: Get the version
+ id: get_version
+ run: echo "::set-output name=version_tag::${GITHUB_REF/refs\/tags\//}"
+
+ # GoReleaser will take care of publishing those artifacts into the release
+ - name: Run GoReleaser
+ uses: goreleaser/goreleaser-action@v1
+ with:
+ version: latest
+ args: release --rm-dist
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ TAG: ${{ steps.vars.outputs.version_tag }}
diff --git a/.gitignore b/.gitignore
index 16d38e0..d8128f5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,3 +16,8 @@ cmd/caddy/caddy.exe
# go modules
vendor
+
+# goreleaser artifacts
+dist
+caddy-build
+caddy-dist \ No newline at end of file
diff --git a/.goreleaser.yml b/.goreleaser.yml
new file mode 100644
index 0000000..c87ba6b
--- /dev/null
+++ b/.goreleaser.yml
@@ -0,0 +1,66 @@
+before:
+ hooks:
+ - mkdir -p caddy-build
+ - cp cmd/caddy/main.go caddy-build/main.go
+ - cp ./go.mod caddy-build/go.mod
+ - sed -i.bkp s/github.com\/caddyserver\/caddy\/v2/caddy/g ./caddy-build/go.mod
+ # GoReleaser doesn't seem to offer {{.Tag}} at this stage, so we have to embed it into the env
+ # so we run: TAG=$(git describe --abbrev=0) goreleaser release --rm-dist --skip-publish --skip-validate
+ - go mod edit -require=github.com/caddyserver/caddy/v2@{{.Env.TAG}} ./caddy-build/go.mod
+ - git clone --depth 1 https://github.com/caddyserver/dist caddy-dist
+ - go mod download
+builds:
+- env:
+ - CGO_ENABLED=0
+ - GO111MODULE=on
+ main: main.go
+ dir: ./caddy-build
+ binary: caddy
+ goos:
+ - darwin
+ - linux
+ - windows
+ - freebsd
+ goarch:
+ - amd64
+ - 386
+ - arm
+ - arm64
+ goarm:
+ - 6
+ - 7
+ ignore:
+ - goos: darwin
+ goarch: 386
+ - goos: darwin
+ goarch: arm
+ flags:
+ - -trimpath
+ ldflags:
+ - -s -w
+archives:
+ - format_overrides:
+ - goos: windows
+ format: zip
+ replacements:
+ darwin: macOS
+ linux: Linux
+ windows: Windows
+ 386: i386
+ amd64: x86_64
+checksum:
+ algorithm: sha512
+release:
+ github:
+ owner: caddyserver
+ name: caddy
+ draft: true
+ prerelease: auto
+changelog:
+ sort: asc
+ filters:
+ exclude:
+ - '^docs:'
+ - '^test:'
+ - '^chore:'
+ - '^\w+\s+' # a hack to remove commit messages without colons thus don't correspond to a package