1
1
name : " Tests"
2
2
3
3
on :
4
- pull_request :
4
+ pull_request :
5
5
branches :
6
6
- main
7
7
paths-ignore :
8
- - ' lightrun-init-agent/**'
9
- - ' .github/**'
10
- - ' docs/**'
11
- - ' grafana/**'
8
+ - " lightrun-init-agent/**"
9
+ - " .github/**"
10
+ - " docs/**"
11
+ - " grafana/**"
12
12
13
- jobs :
13
+ jobs :
14
14
e2e_test :
15
15
name : Build controller and install helm chart
16
16
runs-on : ubuntu-latest
@@ -20,189 +20,184 @@ jobs:
20
20
ports :
21
21
- 5000:5000
22
22
steps :
23
- - uses : actions/checkout@v3
24
-
25
- - name : Setup Go environment
26
- uses : actions/setup-go@v4
27
- with :
28
- go-version : ' 1.20'
29
-
30
- - name : Run tests
31
- shell : bash
32
- run : |
33
- make test
34
-
35
- - name : Spin up k3s cluster
36
- shell : bash
37
- run : |
38
-
39
- # Add local registry to /etc/hosts
40
- echo '127.0.0.1 localreg.com' | sudo tee -a /etc/hosts
41
-
42
- # Install kubectl
43
- curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
44
-
45
- # Install helm
46
- curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
47
- chmod 700 get_helm.sh
48
- ./get_helm.sh
49
-
50
- #Install k3s
51
- curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644" INSTALL_K3S_VERSION="v1.28.5+k3s1" sh -s -
52
-
53
- mkdir ~/.kube || echo "~/.kube already existed"
54
- sudo chmod 777 /etc/rancher/k3s/k3s.yaml
55
- sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
56
- sudo chmod 777 ~/.kube/config
57
-
58
- cat <<EOF >> /tmp/registries.yaml
59
- mirrors:
60
- "localreg.com:5000":
61
- endpoint:
62
- - "http://localreg.com:5000"
63
- EOF
64
-
65
- sudo cp /tmp/registries.yaml /etc/rancher/k3s/
66
- sudo chmod 777 /etc/rancher/k3s/registries.yaml
67
-
68
- #printf "\nRegistry file\n"
69
- #cat /etc/rancher/k3s/registries.yaml
70
-
71
- #printf "\nkube config\n"
72
- #cat ~/.kube/config
73
-
74
- # ensure that node is created
75
- timeout 2m bash -c 'until kubectl get node $HOSTNAME; do sleep 1; done'
76
-
77
- # test for 120 to see if node will go ready
78
- kubectl wait --timeout=120s --for=condition=Ready node/$(echo $HOSTNAME| awk '{print tolower($0)}')
79
-
80
- # Restart need to update local registry config
81
- printf "Restart k3s service\n"
82
- sudo systemctl restart k3s
83
- kubectl wait --timeout=120s --for=condition=Ready node/$(echo $HOSTNAME| awk '{print tolower($0)}')
84
-
85
- - name : Build and push to local repo
86
- uses : docker/build-push-action@v3
87
- with :
88
- context : .
89
- push : true
90
- tags : localreg.com:5000/lightrun-k8s-operator:0.0.0-${{ github.run_number }}
91
-
92
-
93
- - name : Install chart and test controller
94
- shell : bash
95
- run : |
96
- #printf "Check local registry image\n"
97
- #curl http://localreg.com:5000/v2/lightrun-k8s-operator/manifests/0.0.0-${{ github.run_number }}
98
-
99
-
100
- yq -i '.controllerManager.manager.image.repository = "localreg.com:5000/lightrun-k8s-operator"' .github/workflows/tests_data/chart_values.yaml
101
- yq -i '.controllerManager.manager.image.tag = "0.0.0-${{ github.run_number }}"' .github/workflows/tests_data/chart_values.yaml
102
- yq -i '.spec.agentName = "ci-k3s-controller-chart-test-${{ github.run_number }}"' .github/workflows/tests_data/lightrunjavaagent.yaml
103
- yq -i '.spec.agentTags += ["ci-k3s-controller-chart-test-${{ github.run_number }}"]' .github/workflows/tests_data/lightrunjavaagent.yaml
104
- yq -i '.managerConfig.operatorScope.namespacedScope = true' .github/workflows/tests_data/chart_values.yaml
105
-
106
- kubectl create ns lightrun-k8s-operator
107
- kubectl create ns app-ns
108
- kubectl config set-context --current --namespace=app-ns
109
-
110
- printf "Deploy Java app\n"
111
- kubectl apply -f examples/deployment.yaml
112
-
113
-
114
- printf "Add agent secret\n"
115
- cat <<EOF | kubectl create -f -
116
- apiVersion: v1
117
- metadata:
118
- name: lightrun-secrets
119
- stringData:
120
- lightrun_key: ${{ secrets.DOGFOOD_KEY }}
121
- pinned_cert_hash: ${{ secrets.DOGFOOD_CERT }}
122
- kind: Secret
123
- type: Opaque
124
- EOF
125
-
126
-
127
- printf "Update generated parts of helm chart\n"
128
- make before-push
129
- printf "Install helm chart\n"
130
- helm install -n lightrun-k8s-operator lightrun-k8s-operator ./helm-chart -f .github/workflows/tests_data/chart_values.yaml
131
-
132
- kubectl wait deployment sample-deployment --for condition=Available=True --timeout=90s
133
-
134
- kubectl get deployments -n lightrun-k8s-operator
135
- kubectl get pods -n lightrun-k8s-operator
136
- kubectl wait deployment -n lightrun-k8s-operator lightrun-k8s-operator-controller-manager --for condition=Available=True --timeout=200s
137
- kubectl get pods -n lightrun-k8s-operator
138
-
139
-
140
- kubectl apply -f .github/workflows/tests_data/lightrunjavaagent.yaml
141
- kubectl wait deployment sample-deployment --for condition=Available=True --timeout=90s
142
-
143
-
144
- printf "Wait 1 minute\n"
145
- sleep 60
146
- printf "\nController logs\n\n"
147
- kubectl logs --tail=500 -l control-plane=controller-manager -n lightrun-k8s-operator
148
-
149
-
150
-
151
-
152
- printf "\n\nAgent INFO log\n"
153
- kubectl exec -t deploy/sample-deployment -c app -- cat /tmp/lightrun_java_agent.INFO
154
- printf "\n\nAgent ERROR log\n"
155
- kubectl exec -t deploy/sample-deployment -c app -- cat /tmp/lightrun_java_agent.ERROR || true
156
-
157
-
158
- printf "\nSearching for "registered" in INFO log\n"
159
- if kubectl exec -t deploy/sample-deployment -c app -- cat /tmp/lightrun_java_agent.INFO | grep Debuggee |grep registered > /dev/null; then
160
- printf "\n----------------\nAgent registered succesfully!\n----------------\n"
161
- else
162
- printf "\n----------------\nAgent failed to register!\n----------------\n"
163
- export AGENT_REGISTERED=false
164
- fi
165
-
166
-
167
-
168
-
169
- printf "Add resources in restricted namespace\n"
170
- kubectl create ns restricted
171
- kubectl config set-context --current --namespace=restricted
172
- printf "Deploy Java app\n"
173
- kubectl apply -f examples/deployment.yaml
174
-
175
- printf "Add agent secret\n"
176
- cat <<EOF | kubectl create -f -
177
- apiVersion: v1
178
- metadata:
179
- name: lightrun-secrets
180
- stringData:
181
- lightrun_key: ${{ secrets.DOGFOOD_KEY }}
182
- pinned_cert_hash: ${{ secrets.DOGFOOD_CERT }}
183
- kind: Secret
184
- type: Opaque
185
- EOF
23
+ - uses : actions/checkout@v3
24
+
25
+ - name : Setup Go environment
26
+ uses : actions/setup-go@v4
27
+ with :
28
+ go-version : " 1.22"
29
+
30
+ - name : Run tests
31
+ shell : bash
32
+ run : |
33
+ make test
34
+
35
+ - name : Spin up k3s cluster
36
+ shell : bash
37
+ run : |
186
38
187
- kubectl apply -f .github/workflows/tests_data/lightrunjavaagent.yaml
39
+ # Add local registry to /etc/hosts
40
+ echo '127.0.0.1 localreg.com' | sudo tee -a /etc/hosts
188
41
189
- sleep 5
190
- kubectl describe deployment sample-deployment
42
+ # Install kubectl
43
+ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
191
44
192
- printf "Controller logs\n\n\n"
193
- kubectl logs --tail=500 -l control-plane=controller-manager -n lightrun-k8s-operator
45
+ # Install helm
46
+ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
47
+ chmod 700 get_helm.sh
48
+ ./get_helm.sh
194
49
195
- printf "LightrunJavaAgents status\n\n\n"
196
- kubectl get lrja --all-namespaces
50
+ #Install k3s
51
+ curl -sfL https:// get.k3s.io | K3S_KUBECONFIG_MODE="644" INSTALL_K3S_VERSION="v1.28.5+k3s1" sh -s -
197
52
198
- printf "\nCleanup\n\n"
199
- bash /usr/local/bin/k3s-uninstall.sh
200
- rm -rf ~/.kube
201
-
202
- if [[ $AGENT_REGISTERED == "false" ]]; then
203
- exit 1
204
- fi
205
-
206
-
53
+ mkdir ~/.kube || echo "~/.kube already existed"
54
+ sudo chmod 777 /etc/rancher/k3s/k3s.yaml
55
+ sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
56
+ sudo chmod 777 ~/.kube/config
207
57
58
+ cat <<EOF >> /tmp/registries.yaml
59
+ mirrors:
60
+ "localreg.com:5000":
61
+ endpoint:
62
+ - "http://localreg.com:5000"
63
+ EOF
208
64
65
+ sudo cp /tmp/registries.yaml /etc/rancher/k3s/
66
+ sudo chmod 777 /etc/rancher/k3s/registries.yaml
67
+
68
+ #printf "\nRegistry file\n"
69
+ #cat /etc/rancher/k3s/registries.yaml
70
+
71
+ #printf "\nkube config\n"
72
+ #cat ~/.kube/config
73
+
74
+ # ensure that node is created
75
+ timeout 2m bash -c 'until kubectl get node $HOSTNAME; do sleep 1; done'
76
+
77
+ # test for 120 to see if node will go ready
78
+ kubectl wait --timeout=120s --for=condition=Ready node/$(echo $HOSTNAME| awk '{print tolower($0)}')
79
+
80
+ # Restart need to update local registry config
81
+ printf "Restart k3s service\n"
82
+ sudo systemctl restart k3s
83
+ kubectl wait --timeout=120s --for=condition=Ready node/$(echo $HOSTNAME| awk '{print tolower($0)}')
84
+
85
+ - name : Build and push to local repo
86
+ uses : docker/build-push-action@v3
87
+ with :
88
+ context : .
89
+ push : true
90
+ tags : localreg.com:5000/lightrun-k8s-operator:0.0.0-${{ github.run_number }}
91
+
92
+ - name : Install chart and test controller
93
+ shell : bash
94
+ run : |
95
+ #printf "Check local registry image\n"
96
+ #curl http://localreg.com:5000/v2/lightrun-k8s-operator/manifests/0.0.0-${{ github.run_number }}
97
+
98
+
99
+ yq -i '.controllerManager.manager.image.repository = "localreg.com:5000/lightrun-k8s-operator"' .github/workflows/tests_data/chart_values.yaml
100
+ yq -i '.controllerManager.manager.image.tag = "0.0.0-${{ github.run_number }}"' .github/workflows/tests_data/chart_values.yaml
101
+ yq -i '.spec.agentName = "ci-k3s-controller-chart-test-${{ github.run_number }}"' .github/workflows/tests_data/lightrunjavaagent.yaml
102
+ yq -i '.spec.agentTags += ["ci-k3s-controller-chart-test-${{ github.run_number }}"]' .github/workflows/tests_data/lightrunjavaagent.yaml
103
+ yq -i '.managerConfig.operatorScope.namespacedScope = true' .github/workflows/tests_data/chart_values.yaml
104
+
105
+ kubectl create ns lightrun-k8s-operator
106
+ kubectl create ns app-ns
107
+ kubectl config set-context --current --namespace=app-ns
108
+
109
+ printf "Deploy Java app\n"
110
+ kubectl apply -f examples/deployment.yaml
111
+
112
+
113
+ printf "Add agent secret\n"
114
+ cat <<EOF | kubectl create -f -
115
+ apiVersion: v1
116
+ metadata:
117
+ name: lightrun-secrets
118
+ stringData:
119
+ lightrun_key: ${{ secrets.DOGFOOD_KEY }}
120
+ pinned_cert_hash: ${{ secrets.DOGFOOD_CERT }}
121
+ kind: Secret
122
+ type: Opaque
123
+ EOF
124
+
125
+
126
+ printf "Update generated parts of helm chart\n"
127
+ make before-push
128
+ printf "Install helm chart\n"
129
+ helm install -n lightrun-k8s-operator lightrun-k8s-operator ./helm-chart -f .github/workflows/tests_data/chart_values.yaml
130
+
131
+ kubectl wait deployment sample-deployment --for condition=Available=True --timeout=90s
132
+
133
+ kubectl get deployments -n lightrun-k8s-operator
134
+ kubectl get pods -n lightrun-k8s-operator
135
+ kubectl wait deployment -n lightrun-k8s-operator lightrun-k8s-operator-controller-manager --for condition=Available=True --timeout=200s
136
+ kubectl get pods -n lightrun-k8s-operator
137
+
138
+
139
+ kubectl apply -f .github/workflows/tests_data/lightrunjavaagent.yaml
140
+ kubectl wait deployment sample-deployment --for condition=Available=True --timeout=90s
141
+
142
+
143
+ printf "Wait 1 minute\n"
144
+ sleep 60
145
+ printf "\nController logs\n\n"
146
+ kubectl logs --tail=500 -l control-plane=controller-manager -n lightrun-k8s-operator
147
+
148
+
149
+
150
+
151
+ printf "\n\nAgent INFO log\n"
152
+ kubectl exec -t deploy/sample-deployment -c app -- cat /tmp/lightrun_java_agent.INFO
153
+ printf "\n\nAgent ERROR log\n"
154
+ kubectl exec -t deploy/sample-deployment -c app -- cat /tmp/lightrun_java_agent.ERROR || true
155
+
156
+
157
+ printf "\nSearching for "registered" in INFO log\n"
158
+ if kubectl exec -t deploy/sample-deployment -c app -- cat /tmp/lightrun_java_agent.INFO | grep Debuggee |grep registered > /dev/null; then
159
+ printf "\n----------------\nAgent registered succesfully!\n----------------\n"
160
+ else
161
+ printf "\n----------------\nAgent failed to register!\n----------------\n"
162
+ export AGENT_REGISTERED=false
163
+ fi
164
+
165
+
166
+
167
+
168
+ printf "Add resources in restricted namespace\n"
169
+ kubectl create ns restricted
170
+ kubectl config set-context --current --namespace=restricted
171
+ printf "Deploy Java app\n"
172
+ kubectl apply -f examples/deployment.yaml
173
+
174
+ printf "Add agent secret\n"
175
+ cat <<EOF | kubectl create -f -
176
+ apiVersion: v1
177
+ metadata:
178
+ name: lightrun-secrets
179
+ stringData:
180
+ lightrun_key: ${{ secrets.DOGFOOD_KEY }}
181
+ pinned_cert_hash: ${{ secrets.DOGFOOD_CERT }}
182
+ kind: Secret
183
+ type: Opaque
184
+ EOF
185
+
186
+ kubectl apply -f .github/workflows/tests_data/lightrunjavaagent.yaml
187
+
188
+ sleep 5
189
+ kubectl describe deployment sample-deployment
190
+
191
+ printf "Controller logs\n\n\n"
192
+ kubectl logs --tail=500 -l control-plane=controller-manager -n lightrun-k8s-operator
193
+
194
+ printf "LightrunJavaAgents status\n\n\n"
195
+ kubectl get lrja --all-namespaces
196
+
197
+ printf "\nCleanup\n\n"
198
+ bash /usr/local/bin/k3s-uninstall.sh
199
+ rm -rf ~/.kube
200
+
201
+ if [[ $AGENT_REGISTERED == "false" ]]; then
202
+ exit 1
203
+ fi
0 commit comments