-
Notifications
You must be signed in to change notification settings - Fork 7
141 lines (133 loc) · 3.28 KB
/
cicd.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
name: cicd
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
setup:
name: setup
runs-on: ubuntu-latest
timeout-minutes: 2
strategy:
matrix:
go: [stable]
fail-fast: true
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go }}
check-latest: true
build:
name: build
runs-on: ubuntu-latest
timeout-minutes: 3
strategy:
matrix:
go: [stable]
fail-fast: true
needs: setup
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go }}
check-latest: true
- name: Run go build
run: go build -o /dev/null ./...
clean:
name: clean
runs-on: ubuntu-latest
timeout-minutes: 2
strategy:
matrix:
go: [stable]
fail-fast: true
needs: setup
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go }}
check-latest: true
- name: Run go mod tidy
run: go mod tidy && git diff --exit-code
- name: Run go mod verify
run: go mod verify
- name: Run formatting
run: go run golang.org/x/tools/cmd/goimports@latest -w . && git diff --exit-code
lint:
name: lint
runs-on: ubuntu-latest
timeout-minutes: 4
strategy:
matrix:
go: [stable]
fail-fast: true
needs: setup
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go }}
check-latest: true
- name: Run linting
uses: golangci/golangci-lint-action@v6
with:
version: latest
test:
name: test
runs-on: ubuntu-latest
timeout-minutes: 5
strategy:
matrix:
go: [stable]
fail-fast: true
needs: setup
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go }}
check-latest: true
- name: Run tests
run: go test -shuffle=on -v -count=1 -race -failfast -timeout=30s -covermode=atomic -coverprofile=coverage.out ./...
- name: Convert coverage to lcov
uses: jandelgado/[email protected]
- name: Run Coveralls
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: coverage.lcov
benchmark:
name: benchmark
runs-on: ubuntu-latest
timeout-minutes: 2
strategy:
matrix:
go: [stable]
fail-fast: true
needs: setup
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go }}
check-latest: true
- name: Run benchmarks
run: go test -run=- -benchmem -bench . github.com/wafer-bw/whatsmyip/...