Skip to content

Commit 1e1cba3

Browse files
committed
Add new release mechanism via goreleaser and github actions
Signed-off-by: Mark Peek <markpeek@vmware.com>
1 parent e7ebd61 commit 1e1cba3

File tree

4 files changed

+104
-0
lines changed

4 files changed

+104
-0
lines changed

.github/workflows/release.yml

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
jobs:
8+
goreleaser:
9+
runs-on: ubuntu-latest
10+
steps:
11+
-
12+
name: Checkout
13+
uses: actions/checkout@v2
14+
with:
15+
fetch-depth: 0
16+
-
17+
name: Set up Go
18+
uses: actions/setup-go@v2
19+
with:
20+
go-version: 1.17.6
21+
-
22+
name: golangci-lint
23+
uses: golangci/golangci-lint-action@v2
24+
with:
25+
version: v1.38
26+
args: --issues-exit-code=1
27+
-
28+
name: Import GPG key
29+
id: import_gpg
30+
uses: crazy-max/ghaction-import-gpg@v2
31+
env:
32+
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
33+
PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
34+
-
35+
name: Run GoReleaser
36+
uses: goreleaser/goreleaser-action@v2
37+
with:
38+
version: latest
39+
args: release --rm-dist --release-header .goreleaser.tmpl
40+
env:
41+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
42+
GPG_FINGERPRINT: ${{ steps.import_gpg.outputs.fingerprint }}

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
bin/*
2+
dist/*
23
_output/*
34
.DS_Store
45
.vscode

.goreleaser.tmpl

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Release {{ .Version }} ({{ .Date }})

.goreleaser.yml

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# Visit https://goreleaser.com for documentation on how to customize this
2+
# behavior.
3+
before:
4+
hooks:
5+
# this is just an example and not a requirement for provider building/publishing
6+
- go mod tidy
7+
builds:
8+
- env:
9+
# goreleaser does not work with CGO, it could also complicate
10+
# usage by users in CI/CD systems like Terraform Cloud where
11+
# they are unable to install libraries.
12+
- CGO_ENABLED=0
13+
mod_timestamp: '{{ .CommitTimestamp }}'
14+
flags:
15+
- -trimpath
16+
ldflags:
17+
- '-s -w -X main.version={{.Version}} -X main.commit={{.Commit}}'
18+
goos:
19+
- freebsd
20+
- windows
21+
- linux
22+
- darwin
23+
goarch:
24+
- amd64
25+
- '386'
26+
- arm
27+
- arm64
28+
ignore:
29+
- goos: darwin
30+
goarch: '386'
31+
binary: '{{ .ProjectName }}_v{{ .Version }}'
32+
archives:
33+
- format: zip
34+
name_template: '{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}'
35+
checksum:
36+
name_template: '{{ .ProjectName }}_{{ .Version }}_SHA256SUMS'
37+
algorithm: sha256
38+
signs:
39+
- artifacts: checksum
40+
args:
41+
# if you are using this is a GitHub action or some other automated pipeline, you
42+
# need to pass the batch flag to indicate its not interactive.
43+
- "--batch"
44+
- "--local-user"
45+
- "{{ .Env.GPG_FINGERPRINT }}" # set this environment variable for your signing key
46+
- "--output"
47+
- "${signature}"
48+
- "--detach-sign"
49+
- "${artifact}"
50+
release:
51+
# Visit your project's GitHub Releases page to publish this release.
52+
draft: true
53+
changelog:
54+
filters:
55+
exclude:
56+
- '^docs:'
57+
- '^test:'
58+
- Merge pull request
59+
- Merge branch
60+
- go mod tidy

0 commit comments

Comments
 (0)