diff --git a/.github/workflows/go-2.yml b/.github/workflows/go-2.yml new file mode 100644 index 0000000..227d058 --- /dev/null +++ b/.github/workflows/go-2.yml @@ -0,0 +1,117 @@ +on: + push: + # Sequence of patterns matched against refs/tags + tags: + - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 + +name: Latest Release + +defaults: + run: + shell: bash + +jobs: + lint: + name: Lint files + runs-on: 'ubuntu-latest' + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-go@v2 + with: + go-version: '1.16.3' + - name: golangci-lint + uses: golangci/golangci-lint-action@v2.5.2 + with: + version: latest + test: + name: Run tests + runs-on: 'ubuntu-latest' + needs: lint + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-go@v2 + with: + go-version: '1.16.3' + - run: go test -v -cover + release: + name: Create Release + runs-on: 'ubuntu-latest' + needs: test + strategy: + matrix: + goosarch: + - 'aix/ppc64' + # - 'android/386' + - 'android/amd64' + # - 'android/arm' + - 'android/arm64' + - 'darwin/amd64' + - 'darwin/arm64' + - 'dragonfly/amd64' + - 'freebsd/386' + - 'freebsd/amd64' + - 'freebsd/arm' + - 'freebsd/arm64' + - 'illumos/amd64' + # - 'ios/amd64' + # - 'ios/arm64' + - 'js/wasm' + - 'linux/386' + - 'linux/amd64' + - 'linux/arm' + - 'linux/arm64' + - 'linux/mips' + - 'linux/mips64' + - 'linux/mips64le' + - 'linux/mipsle' + - 'linux/ppc64' + - 'linux/ppc64le' + - 'linux/riscv64' + - 'linux/s390x' + - 'netbsd/386' + - 'netbsd/amd64' + - 'netbsd/arm' + - 'netbsd/arm64' + - 'openbsd/386' + - 'openbsd/amd64' + - 'openbsd/arm' + - 'openbsd/arm64' + - 'openbsd/mips64' + - 'plan9/386' + - 'plan9/amd64' + - 'plan9/arm' + - 'solaris/amd64' + - 'windows/386' + - 'windows/amd64' + - 'windows/arm' + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: actions/setup-go@v2 + with: + go-version: '1.16.3' + - name: Get OS and arch info + run: | + GOOSARCH=${{matrix.goosarch}} + GOOS=${GOOSARCH%/*} + GOARCH=${GOOSARCH#*/} + BINARY_NAME=${{github.repository}}-$GOOS-$GOARCH + echo "BINARY_NAME=$BINARY_NAME" >> $GITHUB_ENV + echo "GOOS=$GOOS" >> $GITHUB_ENV + echo "GOARCH=$GOARCH" >> $GITHUB_ENV + - name: Build + run: | + go build -o "$BINARY_NAME" -v + - name: Release Notes + run: + git log $(git describe HEAD~ --tags --abbrev=0)..HEAD --pretty='format:* %h %s%n * %an <%ae>' --no-merges >> ".github/RELEASE-TEMPLATE.md" + - name: Release with Notes + uses: softprops/action-gh-release@v1 + with: + body_path: ".github/RELEASE-TEMPLATE.md" + draft: true + files: ${{env.BINARY_NAME}} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}