-
Notifications
You must be signed in to change notification settings - Fork 56
136 lines (136 loc) · 3.95 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
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: Check out code
uses: actions/checkout@v3
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version-file: 'go.mod'
id: go
- 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@v3
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version-file: 'go.mod'
- name: clearing models
run: rm -rf models/*
- 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@v3
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version-file: 'go.mod'
- 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: Check out code
uses: actions/checkout@v3
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version-file: 'go.mod'
id: go
- name: Build
run: |
go build -v .
go-test:
name: Tests
needs: ["tidy","build"]
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'
id: go
- 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, 2.8]
steps:
- name: Check out code
uses: actions/checkout@v3
- name: e2e Test
run: DOCKER_HAPROXY_VERSION=${{ matrix.haproxyVersion }} make e2e-docker