-
Notifications
You must be signed in to change notification settings - Fork 54
143 lines (143 loc) · 4.26 KB
/
actions.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
name: CI
on: [push, pull_request]
jobs:
check:
if: ${{ github.event_name == 'pull_request' }}
name: HAProxy check commit message
runs-on: ubuntu-latest
steps:
- name: commit-check
uses: docker://ghcr.io/haproxytech/commit-check:3.0.0
env:
API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
generate-specification:
runs-on: ubuntu-latest
steps:
- name: Set up Go 1.19
uses: actions/setup-go@v2
with:
go-version: 1.19
id: go
- name: Check out code
uses: actions/checkout@v2
- name: Compare
run: |
go run specification/build/build.go -file specification/haproxy-spec.yaml > specification/build/haproxy_spec_to_compare.yaml
diff -u specification/build/haproxy_spec_to_compare.yaml specification/build/haproxy_spec.yaml
- name: YAML script validation
run: |
chmod +x ./specification/scripts/lint-yaml.sh
./specification/scripts/lint-yaml.sh
generate-models:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version-file: 'go.mod'
- name: generating models
run: make models
- name: changes
run: test -z "$(git diff 2> /dev/null)" || exit "Models are not generated, issue \`make models\` and commit the result"
- name: untracked files
run: test -z "$(git ls-files --others --exclude-standard 2> /dev/null)" || exit "Models generation created untracked files, cannot proceed"
lint:
name: golangci-lint
needs: ["generate-specification","generate-models"]
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version-file: 'go.mod'
- uses: actions/cache@v2
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Lint
run: |
make lint
lint-spec:
needs: ["generate-specification","generate-models"]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: yaml-lint
uses: ibiqlik/action-yamllint@master
with:
file_or_dir: .
config_file: .yamllint.yml
tidy:
name: go mod tidy
needs: ["generate-specification","generate-models"]
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.19
- name: tidy
run: go mod tidy
- name: changes
run: test -z "$(git diff 2> /dev/null)" || exit "Go modules not tidied, issue \`go mod tidy\` and commit the result"
build:
name: Build
needs: ["generate-specification","generate-models"]
runs-on: ubuntu-latest
steps:
- name: Set up Go 1.19
uses: actions/setup-go@v2
with:
go-version: 1.19
id: go
- name: Check out code into the Go module directory
uses: actions/checkout@v2
- name: Build
run: |
go build -v .
go-test:
name: Tests
needs: ["tidy","build"]
runs-on: ubuntu-latest
steps:
- name: Set up Go 1.19
uses: actions/setup-go@v2
with:
go-version: 1.19
id: go
- name: Check out code into the Go module directory
uses: actions/checkout@v2
- name: Test
run: |
go test -v ./...
e2e:
name: e2e on HAProxy
needs: ["go-test"]
runs-on: ubuntu-latest
strategy:
matrix:
haproxyVersion: [2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7]
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v2
- name: Build
uses: docker/build-push-action@v2
with:
file: ./e2e/Dockerfile
build-args: |
HAPROXY_VERSION=${{ matrix.haproxyVersion }}
tags: client-native-test:${{ matrix.haproxyVersion }}
- uses: addnab/docker-run-action@v2
with:
image: client-native-test:${{ matrix.haproxyVersion }}
run: go test -tags integration ./...