11name : Test with Kubernetes
22
3- on : [push, pull_request]
3+ on :
4+ push :
5+ pull_request :
6+ schedule :
7+ - cron : ' 10 10 * * 3'
48
59jobs :
610 test :
711 runs-on : ubuntu-latest
812
913 strategy :
1014 matrix :
11- transporter : [NATS, Redis, MQTT, AMQP, AMQP10, STAN, Kafka]
15+ # transporter: [NATS, Redis, MQTT, AMQP, AMQP10, Kafka]
16+ transporter : [None, NATS, Redis, MQTT, AMQP, Kafka]
1217 fail-fast : false
1318
1419 steps :
15- - uses : actions/checkout@v3
20+ - uses : actions/checkout@v4
1621
1722 - name : Use Node.js with ${{ matrix.transporter }} transporter
18- uses : actions/setup-node@v3
23+ uses : actions/setup-node@v4
1924 with :
20- node-version : 18 .x
25+ node-version : 22 .x
2126
2227 - name : Install dependencies
2328 run : npm i
@@ -31,47 +36,62 @@ jobs:
3136 - name : Generate project with '${{ matrix.transporter }}' transporter
3237 run : npm test
3338
34- - name : Run tests in the generated project
35- run : npm test
36- working-directory : ./ci-test
37-
38- - name : Start a local Docker Registry
39- run : docker run -d --restart=always -p 5000:5000 --name registry registry:2
40-
4139 - name : Build Docker image
42- run : docker build -t ci-test:demo .
40+ run : docker build -t ci-test .
4341 working-directory : ./ci-test
4442
4543 -
uses :
engineerd/[email protected] 4644 with :
47- version : " v0.17 .0"
45+ version : " v0.29 .0"
4846 config : ./test/ci/kind-config.yaml
4947
5048 - run : kubectl cluster-info
5149 - run : kubectl get nodes
52- - run : kubectl get pods -n kube-system
50+ - run : kubectl get pods --all-namespaces
5351
54- - name : Load Docker image
55- run : kind load docker-image ci-test:demo ci-test:demo
52+ - name : Load built image
53+ run : kind load docker-image ci-test
5654
5755 - name : Install NGINX Ingress
58- run : kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml
56+ run : |
57+ kubectl apply -f https://kind.sigs.k8s.io/examples/ingress/deploy-ingress-nginx.yaml
58+ kubectl wait --namespace ingress-nginx \
59+ --for=condition=ready pod \
60+ --selector=app.kubernetes.io/component=controller \
61+ --timeout=90s
62+
63+ - run : cat ./ci-test/k8s.yaml
5964
6065 - name : Kubectl apply
6166 working-directory : ./ci-test
62- run : |
63- # Fix nginx ingress issue: https://github.com/kubernetes/ingress-nginx/issues/5401#issuecomment-662424306
64- kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission
65- sed 's/image: ci-test/image: ci-test:demo/g' k8s.yaml | kubectl apply -f -
67+ run : kubectl apply -f k8s.yaml
6668
67- - name : Sleeping 120 secs
68- run : sleep 120
69+ - name : Wait for deployment
70+ run : " kubectl rollout status deployment ${{ matrix.transporter != 'None' && 'greeter' || 'services' }} --timeout=180s"
71+
72+ - name : Sleeping 90 secs (for Redis, Mongo...etc)
73+ run : sleep 90
6974
7075 - name : Check pods
71- run : kubectl get all
76+ run : |
77+ kubectl get all
78+
79+ - name : Check greeter.hello via API
80+ run : curl --silent --show-error --fail http://ci-test.127.0.0.1.nip.io/api/greeter/hello
81+
82+ - name : Check products.list via API
83+ run : curl --silent --show-error --fail http://ci-test.127.0.0.1.nip.io/api/products
84+ if : ${{ matrix.transporter != 'None' }}
85+
86+ - name : Check greeter.hello via GraphQL
87+ run : |
88+ curl --silent --show-error --fail -H "Content-Type: application/json" --data '{"query": "query { hello } "}' http://ci-test.127.0.0.1.nip.io/graphql
89+ if : ${{ matrix.transporter != 'None' }}
7290
73- - run : curl --silent --show-error --fail http://ci-test.127.0.0.1.nip.io/api/greeter/hello
74- - run : curl --silent --show-error --fail http://ci-test.127.0.0.1.nip.io/api/products
91+ - name : Check Pod
92+ run : kubectl describe pod ${{ matrix.transporter != 'None' && 'greeter' || 'services' }}
93+ if : failure()
7594
7695 - name : Check logs
77- run : kubectl logs deployment/products
96+ run : kubectl logs deployment/${{ matrix.transporter != 'None' && 'greeter' || 'services' }}
97+ if : failure()
0 commit comments