From 098a42873db3f1687566aff485aa49dfeda123ed Mon Sep 17 00:00:00 2001 From: Michael Aldridge Date: Thu, 24 Feb 2022 15:47:41 -0600 Subject: [PATCH] Add release workflow --- .github/workflows/release.yml | 27 +++++++++++++++ .goreleaser.yml | 35 +++++++++++++++++++ go.mod | 2 +- scripts/prepare.sh | 3 ++ scripts/vendor-licenses | 64 +++++++++++++++++++++++++++++++++++ 5 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/release.yml create mode 100644 .goreleaser.yml create mode 100755 scripts/prepare.sh create mode 100755 scripts/vendor-licenses diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..9bd4e19 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,27 @@ +--- +name: goreleaser + +on: + push: + tags: + - '*' + +jobs: + goreleaser: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Unshallow + run: git fetch --prune --unshallow + - name: Set up Go + uses: actions/setup-go@v1 + with: + go-version: 1.17.x + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v1 + with: + version: latest + args: release --rm-dist + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.goreleaser.yml b/.goreleaser.yml new file mode 100644 index 0000000..fa33174 --- /dev/null +++ b/.goreleaser.yml @@ -0,0 +1,35 @@ +before: + hooks: + - go mod vendor + - scripts/prepare.sh +builds: + - goos: + - darwin + - freebsd + - linux + - windows +archives: +- replacements: + darwin: Darwin + linux: Linux + windows: Windows + 386: i386 + amd64: x86_64 + files: + - LICENSE + - NOTICE + - README.md +checksum: + name_template: 'checksums.txt' +snapshot: + name_template: "{{ .Tag }}-next" +changelog: + sort: asc + filters: + exclude: + - '^docs:' + - '^test:' +release: + github: + owner: netauth + name: sftpgo-hook diff --git a/go.mod b/go.mod index 9a2e5bf..f75a4e7 100644 --- a/go.mod +++ b/go.mod @@ -7,6 +7,7 @@ require ( github.com/netauth/netauth v0.6.0 github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.10.1 + google.golang.org/grpc v1.43.0 ) require ( @@ -28,7 +29,6 @@ require ( golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e // indirect golang.org/x/text v0.3.7 // indirect google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa // indirect - google.golang.org/grpc v1.43.0 // indirect google.golang.org/protobuf v1.27.1 // indirect gopkg.in/ini.v1 v1.66.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/scripts/prepare.sh b/scripts/prepare.sh new file mode 100755 index 0000000..a40b20f --- /dev/null +++ b/scripts/prepare.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +./scripts/vendor-licenses > NOTICE diff --git a/scripts/vendor-licenses b/scripts/vendor-licenses new file mode 100755 index 0000000..e09f235 --- /dev/null +++ b/scripts/vendor-licenses @@ -0,0 +1,64 @@ +#!/bin/bash + +list_vendor_files() { + find vendor -type f -a \( -iname 'COPYING*' -o -iname 'LICENSE*' \) | sort +} + +list_files() { + goroot="$(go env GOROOT)" + goid='Go programming language' + if [ -r "$goroot/LICENSE" ]; then + echo "${goid}::$goroot/LICENSE" + elif [ -r /usr/share/licenses/go/LICENSE ]; then + echo "${goid}::/usr/share/licenses/go/LICENSE" + else # last restort: HTTP + echo "${goid}::https://golang.org/LICENSE?m=text" + fi + list_vendor_files +} + +generate_notice() { + last= + $0 -all | while IFS=$'\n' read -r license; do + pkg="${license%%::*}" + if [ "$pkg" != "$license" ]; then + license="${license#${pkg}::}" + else + pkg="${pkg#vendor/}" + pkg="${pkg%/*}" + fi + + printf "%s" "${last:+'\n\n\n'}" + last=x + + echo "$pkg" | sed 'p;s/./-/g' + fetch "${license}" + done +} + +fetch() { + case "$1" in + *://*) wget -q -O- "${1#*::}";; + *) cat "${1#*::}";; + esac +} + +case "${1--gen}" in + -gen) + if [ -t 1 ]; then + generate_notice | ${PAGER:-more} + else + generate_notice + fi + ;; + -src) list_vendor_files;; + -all) list_files;; + -h) + echo 'Usage: vendor-licenses [-h|-gen|-src|-all]' >&2 + exit 2 + ;; + *) + echo "Unrecognized argument: '$1'" >&2 + exit 1 + ;; +esac