-
Notifications
You must be signed in to change notification settings - Fork 1
187 lines (185 loc) · 6.77 KB
/
tests.yaml
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
name: tests
on:
push:
branches:
- main
- feature/*
pull_request:
branches: [ main ]
jobs:
generate:
name: generate
runs-on: ubuntu-latest
steps:
- uses: actions/setup-go@v4
with:
go-version: '1.20'
- uses: actions/checkout@v4
- name: run-generate
run: |
make generate
make manifests
git diff --name-only --exit-code
git diff --name-only --staged --exit-code
golangci:
name: lint
needs: [ generate ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: '1.20'
- name: golangci-lint
run: |
make lint
test:
name: tests
runs-on: ubuntu-latest
needs: [ generate ]
strategy:
fail-fast: false
matrix:
go: ['1.20']
steps:
- uses: actions/setup-node@v4
with:
node-version: '16'
- uses: actions/setup-go@v4
with:
go-version: ${{ matrix.go }}
- uses: actions/checkout@v4
- name: install-test-tools-and-go-test
run: |
make test
- name: Send coverage
uses: shogo82148/actions-goveralls@v1
with:
path-to-profile: cover.out
flag-name: Go-${{ matrix.go }}
parallel: true
coveralls-finish:
needs: test
runs-on: ubuntu-latest
steps:
- uses: shogo82148/actions-goveralls@v1
with:
parallel-finished: true
dashboard-test:
needs: [ generate ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build docker image
id: docker_build
uses: docker/build-push-action@v5
with:
context: .
file: ./Dockerfile
push: false
tags: local-kind-test:test
- name: Create k8s Kind Cluster
uses: helm/[email protected]
with:
version: v0.17.0
cluster_name: kind
- name: Install Helm
uses: azure/setup-helm@v3
- name: Install MetalLb
run: |
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.7/config/manifests/metallb-native.yaml
docker network inspect -f '{{.IPAM.Config}}' kind
kubectl wait --namespace metallb-system --for=condition=ready pod --selector=app=metallb --timeout=90s
kubectl apply -f https://kind.sigs.k8s.io/examples/loadbalancer/metallb-config.yaml
kubectl patch ipaddresspools.metallb.io --namespace metallb-system example --type merge --patch '{"spec":{"addresses":["172.18.255.200-172.18.255.250"]}}'
- name: Deploy helm-chart
run: |
kind load docker-image local-kind-test:test
helm repo add kubeteach https://dergeberl.github.io/kubeteach-charts
helm install kubeteach kubeteach/kubeteach-core --namespace kubeteach-system --wait --timeout 120s --create-namespace --set image.pullPolicy=IfNotPresent --set image.repository=local-kind-test --set image.tag=test --set serviceAccount.name=kubeteach --set dashboard.enabled=true --set dashboard.credentials.password=dummy --set dashboard.service.type=LoadBalancer --set webterminal.enabled=true
- name: Deploy kubeteach-example to kind cluster
run: |
kubectl apply -f .github/kind-test-taskdefinitions.yaml
sleep 15
kubectl get po -owide -n kubeteach-system
kubectl get deployments -n kubeteach-system -o wide
kubectl get svc -n kubeteach-system -o wide
kubectl get tasks -A
- name: Get LoadBalancerIP
id: loadbalancer
run: |
echo "ip=$(kubectl get svc -n kubeteach-system kubeteach-core-dashboard -o jsonpath='{.status.loadBalancer.ingress[0].ip}')" >> $GITHUB_OUTPUT
- name: Screenshot Website
uses: swinton/[email protected]
with:
source: http://kubeteach:dummy@${{ steps.loadbalancer.outputs.ip }}
destination: screenshot.png
deploy-test:
needs: [ generate ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build docker image
id: docker_build
uses: docker/build-push-action@v5
with:
context: .
file: ./Dockerfile
push: false
tags: local-kind-test:test
- name: Create k8s Kind Cluster
uses: helm/[email protected]
with:
version: v0.17.0
cluster_name: kind
- name: Install Helm
uses: azure/setup-helm@v3
- name: Deploy helm-chart
run: |
kind load docker-image local-kind-test:test
helm repo add kubeteach https://dergeberl.github.io/kubeteach-charts
helm install kubeteach kubeteach/kubeteach-core --namespace kubeteach-system --wait --timeout 120s --create-namespace --set image.pullPolicy=IfNotPresent --set image.repository=local-kind-test --set image.tag=test --set serviceAccount.name=kubeteach
- name: Deploy kubeteach-example to kind cluster
run: |
kubectl apply -f .github/kind-test-taskdefinitions.yaml
sleep 15
kubectl get po -owide -n kubeteach-system
kubectl get deployments -n kubeteach-system -o wide
kubectl get tasks -A
- name: Run test in kind cluster
run: |
kubectl get task task01 -o jsonpath='{.status.state}' | grep successful
kubectl get task task02 -o jsonpath='{.status.state}' | grep active
kubectl get task task03 -o jsonpath='{.status.state}' | grep pending
exerciseset1-test:
needs: [ generate ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build docker image
id: docker_build
uses: docker/build-push-action@v5
with:
context: .
file: ./Dockerfile
push: false
tags: local-kind-test:test
- name: Create k8s Kind Cluster
uses: helm/[email protected]
with:
version: v0.17.0
cluster_name: kind
- name: Install Helm
uses: azure/setup-helm@v3
- name: Deploy helm-chart
run: |
kind load docker-image local-kind-test:test
helm repo add kubeteach https://dergeberl.github.io/kubeteach-charts
helm install kubeteach kubeteach/kubeteach-exerciseset1 --namespace kubeteach-system --create-namespace --set kubeteach.image.pullPolicy=IfNotPresent --set kubeteach.image.repository=local-kind-test --set kubeteach.image.tag=test --set kubeteach.serviceAccount.name=kubeteach
- name: wait for kubeteach to get ready
run: |
kubectl wait --for=condition=available --timeout=600s -n kubeteach-system deployment/kubeteach
sleep 15
- name: Apply solutions and check task
run: |
bash .github/test-exerciseset1.sh