-
Notifications
You must be signed in to change notification settings - Fork 12
155 lines (134 loc) · 6.83 KB
/
go.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
name: Go
on:
push:
branches:
- master
tags:
- 'v*'
pull_request:
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Get the version
if: startsWith(github.ref, 'refs/tags/')
id: get_version
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
- name: Set up Go 1.13
uses: actions/setup-go@v1
with:
go-version: 1.13
id: go
- name: Check out code into the Go module directory
uses: actions/checkout@v2
- name: Cache dependencies
uses: actions/cache@v2
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Get dependencies
run: go get -v -t -d ./...
- name: Test
run: go test ./...
- name: Set Version
if: startsWith(github.ref, 'refs/tags/')
run: |
echo 'package command
const version = "${{ steps.get_version.outputs.VERSION }}"' > command/version.go
- name: Build
run: |
mkdir bin
GOOS=linux GOARCH=amd64 go build -ldflags "-s" -o bin/vermin && \
cd bin && tar czf vermin-${{ steps.get_version.outputs.VERSION }}-linux.tar.gz vermin \
&& rm -rf vermin && cd -
GOOS=darwin GOARCH=amd64 go build -ldflags "-s" -o bin/vermin && \
cd bin && tar czf vermin-${{ steps.get_version.outputs.VERSION }}-darwin.tar.gz vermin \
&& rm -rf vermin && cd -
GOOS=windows GOARCH=amd64 go build -ldflags "-s" -o bin/vermin.exe && \
cd bin && zip vermin-${{ steps.get_version.outputs.VERSION }}-windows.zip vermin.exe \
&& rm -rf vermin.exe && cd -
cd bin
sha256sum vermin-${{ steps.get_version.outputs.VERSION }}-linux.tar.gz > vermin-${{ steps.get_version.outputs.VERSION }}-linux.tar.gz.sha256sum
sha256sum vermin-${{ steps.get_version.outputs.VERSION }}-darwin.tar.gz > vermin-${{ steps.get_version.outputs.VERSION }}-darwin.tar.gz.sha256sum
sha256sum vermin-${{ steps.get_version.outputs.VERSION }}-windows.zip > vermin-${{ steps.get_version.outputs.VERSION }}-windows.zip.sha256sum
cd -
- uses: actions/upload-artifact@master
if: startsWith(github.ref, 'refs/tags/')
with:
name: my-artifacts
path: bin
release:
name: Release
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
needs: [build]
steps:
- uses: actions/download-artifact@v4
- run: mv my-artifacts/* .
- name: Get the version
id: get_version
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false
# linux
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
asset_path: ./vermin-${{ steps.get_version.outputs.VERSION }}-linux.tar.gz
asset_name: vermin-${{ steps.get_version.outputs.VERSION }}-linux.tar.gz
asset_content_type: application/tar+gzip
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
asset_path: ./vermin-${{ steps.get_version.outputs.VERSION }}-linux.tar.gz.sha256sum
asset_name: vermin-${{ steps.get_version.outputs.VERSION }}-linux.tar.gz.sha256sum
asset_content_type: text/plain
# darwin
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
asset_path: ./vermin-${{ steps.get_version.outputs.VERSION }}-darwin.tar.gz
asset_name: vermin-${{ steps.get_version.outputs.VERSION }}-darwin.tar.gz
asset_content_type: application/tar+gzip
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
asset_path: ./vermin-${{ steps.get_version.outputs.VERSION }}-darwin.tar.gz.sha256sum
asset_name: vermin-${{ steps.get_version.outputs.VERSION }}-darwin.tar.gz.sha256sum
asset_content_type: text/plain
# darwin
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
asset_path: ./vermin-${{ steps.get_version.outputs.VERSION }}-windows.zip
asset_name: vermin-${{ steps.get_version.outputs.VERSION }}-windows.zip
asset_content_type: application/tar+gzip
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
asset_path: ./vermin-${{ steps.get_version.outputs.VERSION }}-windows.zip.sha256sum
asset_name: vermin-${{ steps.get_version.outputs.VERSION }}-windows.zip.sha256sum
asset_content_type: text/plain