-
Notifications
You must be signed in to change notification settings - Fork 12
186 lines (159 loc) · 5.86 KB
/
e2e.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
name: CI E2E
on:
pull_request:
branches:
- 'main'
- 'release-0.11'
defaults:
run:
shell: bash
jobs:
e2e-ic:
runs-on: ubuntu-latest
env:
E2E_NODE_REFERENCE: true
E2E_TOPOLOGY_MANAGER_POLICY: single-numa-node
E2E_TOPOLOGY_MANAGER_SCOPE: container
RTE_CONTAINER_IMAGE: quay.io/k8stopologyawarewg/resource-topology-exporter:ci
RTE_METRICS_CLI_AUTH: false
RTE_METRICS_MODE: http
RTE_POLL_INTERVAL: 10s
RTE_VERBOSE: 4
steps:
- name: checkout sources
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: setup golang
uses: actions/setup-go@v4
id: go
with:
go-version: 1.23
- name: show tool versions
run: |
go version
kind version
- name: build test binary
run: |
make build-e2e
- name: build image
run: |
RTE_CONTAINER_IMAGE=${RTE_CONTAINER_IMAGE} RUNTIME=docker make image
- name: generate manifests
run: |
RTE_CONTAINER_IMAGE=${RTE_CONTAINER_IMAGE} \
RTE_METRICS_CLI_AUTH=${RTE_METRICS_CLI_AUTH} \
RTE_METRICS_MODE=${RTE_METRICS_MODE} \
RTE_POLL_INTERVAL=${RTE_POLL_INTERVAL} \
RTE_VERBOSE=${RTE_VERBOSE} \
make gen-manifests | tee rte-e2e.yaml
- name: create K8S kind cluster
run: |
# kind is part of 20.04 image, see: https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md
# see image listing in https://github.com/kubernetes-sigs/kind/releases/tag/v0.20.0
kind create cluster --config=hack/kind-config-e2e.yaml --image kindest/node:v1.27.3@sha256:3966ac761ae0136263ffdb6cfd4db23ef8a83cba8a463690e98317add2c9ba72
kind load docker-image ${RTE_CONTAINER_IMAGE}
- name: deploy RTE
run: |
# TODO: what about the other workers (if any)?
kubectl label node kind-worker node-role.kubernetes.io/worker=''
kubectl create -f rte-e2e.yaml
- name: cluster info
run: |
kubectl get nodes
kubectl get pods -A
kubectl describe pod -l name=resource-topology || :
kubectl logs -l name=resource-topology -c resource-topology-exporter-container || :
- name: cluster ready
run: |
hack/check-ds.sh
kubectl logs -l name=resource-topology -c resource-topology-exporter-container || :
kubectl get noderesourcetopologies.topology.node.k8s.io -A -o yaml
- name: deploy sample-devices
run: |
hack/deploy-devices.sh
hack/check-ds.sh default device-plugin-a-ds
kubectl describe nodes -l node-role.kubernetes.io/worker= || :
- name: run E2E tests
run: |
export KUBECONFIG=${HOME}/.kube/config
_out/rte-e2e.test -ginkgo.v -ginkgo.focus='\[(RTE|TopologyUpdater)\].*\[(Local|InfraConsuming|Monitoring)\]'
- name: show RTE logs
if: ${{ failure() }}
run: |
kubectl logs -c resource-topology-exporter-container $( kubectl get pods --no-headers -o custom-columns=":metadata.name" | grep -- resource-topology-exporter ) || :
e2e-metrics:
strategy:
matrix:
mode: [http, httptls]
address: ["0.0.0.0","127.120.110.100"]
runs-on: ubuntu-latest
env:
E2E_NODE_REFERENCE: true
E2E_TOPOLOGY_MANAGER_POLICY: single-numa-node
E2E_TOPOLOGY_MANAGER_SCOPE: container
RTE_CONTAINER_IMAGE: quay.io/k8stopologyawarewg/resource-topology-exporter:ci
RTE_METRICS_CLI_AUTH: false
RTE_METRICS_MODE: ${{ matrix.mode }}
METRICS_ADDRESS: ${{ matrix.address }}
METRICS_PORT: "2112"
RTE_POLL_INTERVAL: 10s
RTE_VERBOSE: 6
steps:
- name: checkout sources
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: setup golang
uses: actions/setup-go@v4
id: go
with:
go-version: 1.23
- name: show tool versions
run: |
go version
kind version
- name: build test binary
run: |
make build-e2e
- name: build image
run: |
RTE_CONTAINER_IMAGE=${RTE_CONTAINER_IMAGE} RUNTIME=docker make image
- name: generate manifests
run: |
RTE_CONTAINER_IMAGE=${RTE_CONTAINER_IMAGE} \
RTE_METRICS_CLI_AUTH=${RTE_METRICS_CLI_AUTH} \
RTE_METRICS_MODE=${RTE_METRICS_MODE} \
METRICS_ADDRESS=${METRICS_ADDRESS} \
METRICS_PORT=${METRICS_PORT} \
RTE_POLL_INTERVAL=${RTE_POLL_INTERVAL} \
RTE_VERBOSE=${RTE_VERBOSE} \
make gen-manifests | tee rte-e2e.yaml
- name: create K8S kind cluster
run: |
# kind is part of 20.04 image, see: https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md
# see image listing in https://github.com/kubernetes-sigs/kind/releases/tag/v0.20.0
kind create cluster --config=hack/kind-config-e2e.yaml --image kindest/node:v1.27.3@sha256:3966ac761ae0136263ffdb6cfd4db23ef8a83cba8a463690e98317add2c9ba72
kind load docker-image ${RTE_CONTAINER_IMAGE}
- name: deploy RTE
run: |
# TODO: what about the other workers (if any)?
kubectl label node kind-worker node-role.kubernetes.io/worker=''
hack/create-tls-secrets.sh
kubectl create -f rte-e2e.yaml
- name: cluster ready
run: |
hack/check-ds.sh
- name: deploy sample-devices
run: |
hack/deploy-devices.sh
hack/check-ds.sh default device-plugin-a-ds
kubectl describe nodes -l node-role.kubernetes.io/worker= || :
- name: run E2E tests
run: |
export KUBECONFIG=${HOME}/.kube/config
_out/rte-e2e.test -ginkgo.v -ginkgo.focus='\[RTE\].*\[Monitoring\]'
- name: show RTE logs
if: ${{ failure() }}
run: |
kubectl logs -c resource-topology-exporter-container $( kubectl get pods --no-headers -o custom-columns=":metadata.name" | grep -- resource-topology-exporter ) || :