13
13
test :
14
14
runs-on : ubuntu-latest
15
15
strategy :
16
+ max-parallel : 2
16
17
matrix :
17
18
# Always quote versions to prevent int truncation (1.30 -> 1.3)
18
19
# https://kubernetes.io/releases
28
29
with :
29
30
kubernetes-version : ${{ matrix.k8s-version }}
30
31
31
-
32
32
- name : Install cert-manager, patch upstream dns servers, wait for readiness
33
33
run : |
34
34
echo "Target cert-manager version: ${{ matrix.cm-version }}"
37
37
kubectl patch deployment cert-manager -n cert-manager --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--dns01-recursive-nameservers=ns1.dnsimple.com:53"}]'
38
38
kubectl wait --for=condition=available --timeout=600s deployment/cert-manager-webhook -n cert-manager
39
39
40
-
41
40
- name : Install cert-manager-webhook-dnsimple, wait for readiness
42
41
env :
43
42
DNSIMPLE_API_TOKEN : ${{ secrets.DNSIMPLE_API_TOKEN }}
54
53
55
54
helm -n cert-manager list
56
55
57
- max_wait_time_seconds=600
56
+ max_wait_time_seconds=800
58
57
sleep_between_iterations=10
59
58
60
59
start=$(date +%s)
63
62
echo ""
64
63
echo "Awaiting succesful deployment for max ${max_wait_time_seconds} seconds or until $(date --date="@$end")"
65
64
while [ $(date +%s) -le $end ]; do
66
- echo "[i] New iteration at $(date +%s )"
65
+ echo "[i] New iteration at $(date)"
67
66
kubectl -n cert-manager get po
68
67
69
68
if [ $(kubectl -n cert-manager get po | grep Crash | wc -l) -gt 0 ]; then
@@ -107,7 +106,6 @@ jobs:
107
106
""" > certificate.yaml
108
107
kubectl apply -f certificate.yaml
109
108
110
-
111
109
- name : Assert that the DNS record was created
112
110
env :
113
111
DNSIMPLE_ZONE_NAME : ${{ secrets.DNSIMPLE_ZONE_NAME }}
@@ -120,9 +118,21 @@ jobs:
120
118
sleep 30
121
119
done
122
120
123
-
124
121
- name : Check the certificate status
125
122
run : |
126
- kubectl wait --for=condition=ready --timeout=600s certificate/dnsimple-test
127
- # this should not be necessary since the certificate is usually ready once the DNS record is propagated
128
- kubectl get certificate dnsimple-test -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}' | grep True
123
+ max_wait_time_seconds=300
124
+ end=$(( $(date +%s) + $max_wait_time_seconds ))
125
+ start=$(date +%s)
126
+
127
+ while [ $(date +%s) -le $end ]; do
128
+ kubectl get certificate/dnsimple-test -o jsonpath='{.status}'
129
+
130
+ if [ $(kubectl get certificate dnsimple-test -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}') == "True" ]; then
131
+ echo "Certificate is ready after $(( $(date +%s) - $start )) seconds"
132
+ exit 0
133
+ fi
134
+ sleep 10
135
+ echo "[i] New iteration at $(date)"
136
+ done
137
+
138
+ echo "::warning title=Certificate timed out::Have timed out waiting for certificate"
0 commit comments