From 768383a610d529e72ccf34b05822c60616cbcada Mon Sep 17 00:00:00 2001 From: Francis Lavoie Date: Sun, 26 Apr 2020 22:20:14 -0400 Subject: ci: Enable GoReleaser .deb support (#3309) * ci: Enable GoReleaser .deb support * ci: Test .deb build * ci: Fix typo * ci: Turn off snapshot (breaks due to go mod edit) * ci: Force the tag to rc3 for now * ci: Let's try to publish the .debs * ci: Attempt to enable build cache, rebuild after fixed line endings * ci: Fix yml dupe ID issue, add caddy-api.service * ci: Split cache keys between files so they're separate * ci: Fix bindir * ci: Update the script files * ci: Retrigger * ci: Push to gemfury * ci: Use loop, fix bad env var * ci: Retrigger * ci: Try to force blank password? * ci: Check if the token is actually present * ci: Cleanup, remove debugging stuff * ci: Remove useless comment --- .github/workflows/ci.yml | 4 ++-- .github/workflows/release.yml | 27 +++++++++++++++++++++------ .goreleaser.yml | 35 ++++++++++++++++++++++++++++++++++- 3 files changed, 57 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6f34dde..d8d1cf7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -72,9 +72,9 @@ jobs: uses: actions/cache@v1 with: path: ${{ steps.vars.outputs.go_cache }} - key: ${{ runner.os }}-go-gocache-${{ hashFiles('**/go.sum') }} + key: ${{ runner.os }}-go-ci-${{ hashFiles('**/go.sum') }} restore-keys: | - ${{ runner.os }}-go- + ${{ runner.os }}-go-ci - name: Get dependencies run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e67ae6e..a58a793 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,6 +27,7 @@ jobs: - name: Unshallowify the repo clone run: git fetch --prune --unshallow + # https://github.community/t5/GitHub-Actions/How-to-get-just-the-tag-name/m-p/32167/highlight/true#M1027 - name: Print Go version and environment id: vars run: | @@ -36,11 +37,17 @@ jobs: 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\//}" + echo "::set-output name=version_tag::${GITHUB_REF/refs\/tags\//}" + echo "::set-output name=short_sha::$(git rev-parse --short HEAD)" + echo "::set-output name=go_cache::$(go env GOCACHE)" + + - name: Cache the build cache + uses: actions/cache@v1 + with: + path: ${{ steps.vars.outputs.go_cache }} + key: ${{ runner.os }}-go-release-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go-release # GoReleaser will take care of publishing those artifacts into the release - name: Run GoReleaser @@ -50,4 +57,12 @@ jobs: args: release --rm-dist env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - TAG: ${{ steps.get_version.outputs.version_tag }} + TAG: ${{ steps.vars.outputs.version_tag }} + + - name: Publish .deb to Gemfury + env: + GEMFURY_PUSH_TOKEN: ${{ secrets.GEMFURY_PUSH_TOKEN }} + run: | + for filename in dist/*.deb; do + curl -F package=@"$filename" https://${GEMFURY_PUSH_TOKEN}:@push.fury.io/caddy/ + done \ No newline at end of file diff --git a/.goreleaser.yml b/.goreleaser.yml index b5ca613..c1e162f 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -3,12 +3,13 @@ before: - 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 + - 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 @@ -35,6 +36,7 @@ builds: - -trimpath ldflags: - -s -w + archives: - format_overrides: - goos: windows @@ -43,12 +45,43 @@ archives: darwin: mac checksum: algorithm: sha512 + +nfpms: + - id: default + package_name: caddy + + vendor: Light Code Labs + homepage: https://caddyserver.com + maintainer: Matthew Holt + description: | + Powerful, enterprise-ready, open source web server with automatic HTTPS written in Go + license: Apache 2.0 + + formats: + - deb + # - rpm + + bindir: /usr/bin + files: + ./caddy-dist/init/caddy.service: /lib/systemd/system/caddy.service + ./caddy-dist/init/caddy-api.service: /lib/systemd/system/caddy-api.service + ./caddy-dist/welcome/index.html: /usr/share/caddy/index.html + config_files: + ./caddy-dist/config/Caddyfile: /etc/caddy/Caddyfile + + scripts: + postinstall: ./caddy-dist/scripts/postinstall.sh + preremove: ./caddy-dist/scripts/preremove.sh + postremove: ./caddy-dist/scripts/postremove.sh + + release: github: owner: caddyserver name: caddy draft: true prerelease: auto + changelog: sort: asc filters: -- cgit v1.2.3