-
-
Notifications
You must be signed in to change notification settings - Fork 38
213 lines (207 loc) · 6.65 KB
/
tests.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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
name: tests
on:
push:
branches:
- main
- release-v*
pull_request:
branches:
- main
jobs:
generate-checks:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-go@v5
with:
go-version: '1.22'
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
cache-dependency-path: pkg/webui/ui/package-lock.json
- uses: actions/cache@v4
with:
path: |
~/go/pkg/mod
~/.cache/go-build
key: docs-check-go-${{ runner.os }}-${{ hashFiles('**/go.sum') }}
restore-keys: |
docs1-check-go-${{ runner.os }}-
- name: Install some tools
run: |
PB_REL="https://github.com/protocolbuffers/protobuf/releases"
PB_VER="24.4"
curl -LO $PB_REL/download/v$PB_VER/protoc-$PB_VER-linux-x86_64.zip
sudo unzip protoc-$PB_VER-linux-x86_64.zip -d /usr/local
rm protoc-$PB_VER-linux-x86_64.zip
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.31.0
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.3.0
- name: Check links on changed files
run: |
make markdown-link-check
- name: Verify commands help is up-to-date
run: |
make replace-commands-help
if [ ! -z "$(git status --porcelain)" ]; then
echo "replace-commands-help must be invoked and the result committed"
git status
git diff
exit 1
fi
- name: Verify generated source is up-to-date
run: |
make generate
if [ ! -z "$(git status --porcelain)" ]; then
echo "make generate must be invoked and the result committed"
git status
git diff
exit 1
fi
- name: Verify generated manifests are up-to-date
run: |
make manifests
if [ ! -z "$(git status --porcelain)" ]; then
echo "make manifests must be invoked and the result committed"
git status
git diff
exit 1
fi
- name: Verify generated api-docs are up-to-date
run: |
make api-docs
if [ ! -z "$(git status --porcelain)" ]; then
echo "make api-docs must be invoked and the result committed"
git status
git diff
exit 1
fi
- name: Verify go.mod and go.sum are clean
run: |
go mod tidy
if [ ! -z "$(git status --porcelain)" ]; then
echo "go mod tidy must be invoked and the result committed"
git status
git diff
exit 1
fi
check-npm-build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
cache-dependency-path: pkg/webui/ui/package-lock.json
- name: Verify webui build works
run: |
make build-webui
check-docker-images:
strategy:
matrix:
include:
- docker_platform: linux/amd64
goarch: amd64
- docker_platform: linux/arm64
goarch: arm64
fail-fast: false
runs-on: ubuntu-latest
name: check-docker-images-${{ matrix.docker_platform }}
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '1.22'
- uses: actions/cache@v4
with:
path: |
~/go/pkg/mod
~/.cache/go-build
key: check-docker-images-${{ matrix.docker_platform }}-${{ hashFiles('**/go.sum') }}
restore-keys: |
tests-go-${{ runner.os }}-
- name: Setup QEMU
uses: docker/setup-qemu-action@v3
- name: Setup Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
- name: Build kluctl
run: |
GOARCH=${{ matrix.goarch }} make build-bin
- name: Build docker images
run: |
docker build -t test-image --platform=${{ matrix.docker_platform }} .
- name: Test if git works inside container
run: |
# test if the git binary is still working, which keep breaking due to wolfi-base updates being missed
# If you see this failing, it's time to upgrade the base image in Dockerfile...
docker run --platform=${{ matrix.docker_platform }} --rm -i --entrypoint=/bin/sh test-image -c "cd && git clone https://github.com/kluctl/kluctl.git"
- name: Test if binary can be executed inside Github actions
if: matrix.goarch == 'amd64'
run: |
cd install/controller
../../bin/kluctl render --offline-kubernetes
tests:
strategy:
matrix:
include:
- os: ubuntu-22.04
run_unit_tests: false
run_e2e_non_gitops: true
run_e2e_gitops: false
name: ubuntu-non-gitops
- os: ubuntu-22.04
run_unit_tests: true
run_e2e_non_gitops: false
run_e2e_gitops: true
name: ubuntu-gitops
- os: macos-12
run_unit_tests: true
# only run e2e tests on branches
run_e2e_non_gitops: ${{ github.event_name != 'pull_request' }}
run_e2e_gitops: ${{ github.event_name != 'pull_request' }}
name: macos
- os: windows-2022
run_unit_tests: true
# only run e2e tests on branches
run_e2e_non_gitops: ${{ github.event_name != 'pull_request' }}
run_e2e_gitops: false # never run gitops tests on windows
name: windows
fail-fast: false
runs-on: ${{ matrix.os }}
name: tests-${{ matrix.name }}
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '1.22'
- uses: actions/cache@v4
with:
path: |
~/go/pkg/mod
~/.cache/go-build
key: tests-go-${{ runner.os }}-${{ hashFiles('**/go.sum') }}
restore-keys: |
tests-go-${{ runner.os }}-
- name: Run unit tests
if: matrix.run_unit_tests
shell: bash
run: |
make test-unit
- name: Run e2e-non-gitops tests
if: matrix.run_e2e_non_gitops
shell: bash
run: |
make test-e2e-non-gitops
- name: Run e2e-gitops tests
if: matrix.run_e2e_gitops
shell: bash
run: |
make test-e2e-gitops