-
Notifications
You must be signed in to change notification settings - Fork 15
134 lines (130 loc) · 3.92 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
name: tests
on:
push:
branches:
- main
- release-v*
- feat-tests
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/cache@v4
with:
path: |
~/go/pkg/mod
~/.cache/go-build
key: generate-check-go-${{ runner.os }}-${{ hashFiles('**/go.sum') }}
restore-keys: |
generate-check-go-${{ runner.os }}-
- 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-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: |
check-docker-images-${{ 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 template-controller
run: |
GOARCH=${{ matrix.goarch }} make build
- 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"
tests:
runs-on: ubuntu-22.04
name: tests
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '1.22'
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- 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 tests
shell: bash
run: |
make test