name: "Continuous Integration" on: push: # run on pushes to master or release/* branches: - master - release/* pull_request: # run on pull requests targeting master branches: - master jobs: run-tests: runs-on: self-hosted steps: - uses: actions/checkout@v2 - name: Setup Cluster run: | set -x kind delete cluster || true kind create cluster kubectl get nodes - name: Deploy From Source run: | skaffold config set --global local-cluster true skaffold run --default-repo local - name: Wait For Pods timeout-minutes: 20 run: | set -x kubectl wait --for=condition=available --timeout=500s deployment/adservice kubectl wait --for=condition=available --timeout=500s deployment/cartservice kubectl wait --for=condition=available --timeout=500s deployment/checkoutservice kubectl wait --for=condition=available --timeout=500s deployment/currencyservice kubectl wait --for=condition=available --timeout=500s deployment/emailservice kubectl wait --for=condition=available --timeout=500s deployment/frontend kubectl wait --for=condition=available --timeout=500s deployment/loadgenerator kubectl wait --for=condition=available --timeout=500s deployment/paymentservice kubectl wait --for=condition=available --timeout=500s deployment/productcatalogservice kubectl wait --for=condition=available --timeout=500s deployment/recommendationservice kubectl wait --for=condition=available --timeout=500s deployment/shippingservice - name: Smoke Test timeout-minutes: 5 run: | set -x # start fresh loadgenerator pod kubectl delete pod -l app=loadgenerator # wait for requests to come in REQUEST_COUNT="0" while [[ "$REQUEST_COUNT" -lt "50" ]]; do sleep 5 REQUEST_COUNT=$(kubectl logs -l app=loadgenerator | grep Aggregated | awk '{print $2}') done # ensure there are no errors hitting endpoints ERROR_COUNT=$(kubectl logs -l app=loadgenerator | grep Aggregated | awk '{print $3}' | sed "s/[(][^)]*[)]//g") if [[ "$ERROR_COUNT" -gt "0" ]]; then exit 1 fi