Added test for service qualities under e2e/testcase #510
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: E2E-1.26 | |
| on: | |
| push: | |
| branches: | |
| - master | |
| - release-* | |
| pull_request: {} | |
| workflow_dispatch: {} | |
| env: | |
| # Common versions | |
| GO_VERSION: '1.22' | |
| KIND_VERSION: 'v0.18.0' | |
| KIND_IMAGE: 'kindest/node:v1.26.4' | |
| KIND_CLUSTER_NAME: 'ci-testing' | |
| CERT_MANAGER_VERSION: 'v1.18.2' | |
| jobs: | |
| game-kruise: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v3 | |
| with: | |
| submodules: true | |
| fetch-depth: 0 | |
| fetch-tags: true | |
| - name: Setup Go | |
| uses: actions/setup-go@v3 | |
| with: | |
| go-version: ${{ env.GO_VERSION }} | |
| - name: Determine build metadata | |
| run: | | |
| VERSION=$(./hack/compute-version.sh) | |
| echo "VERSION=$VERSION" >> "$GITHUB_ENV" | |
| echo "LDFLAGS=-X github.com/openkruise/kruise-game/pkg/version.Version=$VERSION" >> "$GITHUB_ENV" | |
| - name: Prepare audit policy | |
| run: | | |
| mkdir -p /tmp/kind-audit | |
| cp test/audit/policy.yaml /tmp/kind-audit/policy.yaml | |
| - name: Setup Kind Cluster | |
| uses: helm/[email protected] | |
| with: | |
| node_image: ${{ env.KIND_IMAGE }} | |
| cluster_name: ${{ env.KIND_CLUSTER_NAME }} | |
| config: ./test/kind-conf.yaml | |
| version: ${{ env.KIND_VERSION }} | |
| - name: Ensure audit log file exists and is world-readable | |
| run: | | |
| sudo mkdir -p /tmp/kind-audit || true | |
| sudo touch /tmp/kind-audit/audit.log || true | |
| sudo chmod 0644 /tmp/kind-audit/audit.log || true | |
| - name: Build image | |
| run: | | |
| export IMAGE="openkruise/kruise-game-manager:e2e-${GITHUB_RUN_ID}" | |
| docker build --pull --no-cache --build-arg LDFLAGS="$LDFLAGS" . -t $IMAGE | |
| kind load docker-image --name=${KIND_CLUSTER_NAME} $IMAGE || { echo >&2 "kind not installed or error loading image: $IMAGE"; exit 1; } | |
| - name: Install Cert-Manager | |
| run: | | |
| kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/${{ env.CERT_MANAGER_VERSION }}/cert-manager.yaml | |
| kubectl -n cert-manager rollout status deploy/cert-manager-webhook --timeout=180s | |
| - name: Install Kruise | |
| run: | | |
| set -ex | |
| kubectl cluster-info | |
| make helm | |
| helm repo add openkruise https://openkruise.github.io/charts/ | |
| helm repo update | |
| helm install kruise openkruise/kruise --version 1.8.0 | |
| for ((i=1;i<10;i++)); | |
| do | |
| set +e | |
| PODS=$(kubectl get pod -n kruise-system | grep '1/1' | grep kruise-controller-manager | wc -l) | |
| set -e | |
| if [ "$PODS" -eq "2" ]; then | |
| break | |
| fi | |
| sleep 3 | |
| done | |
| set +e | |
| PODS=$(kubectl get pod -n kruise-system | grep '1/1' | grep kruise-controller-manager | wc -l) | |
| set -e | |
| if [ "$PODS" -eq "2" ]; then | |
| echo "Wait for kruise-manager ready successfully" | |
| else | |
| echo "Timeout to wait for kruise-manager ready" | |
| exit 1 | |
| fi | |
| - name: Install Kruise Game | |
| run: | | |
| set -ex | |
| kubectl cluster-info | |
| IMG=openkruise/kruise-game-manager:e2e-${GITHUB_RUN_ID} ./scripts/deploy_kind.sh | |
| for ((i=1;i<10;i++)); | |
| do | |
| set +e | |
| PODS=$(kubectl get pod -n kruise-game-system | grep '1/1' | wc -l) | |
| set -e | |
| if [ "$PODS" -eq "1" ]; then | |
| break | |
| fi | |
| sleep 3 | |
| done | |
| set +e | |
| PODS=$(kubectl get pod -n kruise-game-system | grep '1/1' | wc -l) | |
| kubectl get node -o yaml | |
| kubectl get all -n kruise-game-system -o yaml | |
| set -e | |
| if [ "$PODS" -eq "1" ]; then | |
| echo "Wait for kruise-game ready successfully" | |
| else | |
| echo "Timeout to wait for kruise-game ready" | |
| exit 1 | |
| fi | |
| - name: Verify Kind Cluster | |
| run: | | |
| set -euo pipefail | |
| echo "=== Verifying Kind cluster ===" | |
| kind get clusters | |
| kubectl config use-context kind-${KIND_CLUSTER_NAME} | |
| kubectl cluster-info --request-timeout=15s | |
| kubectl get nodes | |
| - name: Run E2E Tests | |
| run: | | |
| echo "=== Switching to Kind context ===" | |
| export KUBECONFIG=/home/runner/.kube/config | |
| kubectl config use-context kind-${KIND_CLUSTER_NAME} | |
| echo "=== Verifying current context ===" | |
| kubectl config current-context | |
| echo "=== Checking cluster status ===" | |
| kubectl cluster-info | |
| kubectl get nodes | |
| echo "=== Building ginkgo ===" | |
| make ginkgo | |
| echo "=== Running tests with verbose output ===" | |
| EXIT_CODE=0 | |
| ./bin/ginkgo --timeout 60m -v --trace --progress test/e2e || EXIT_CODE=$? | |
| echo "=== Collecting diagnostics ===" | |
| kubectl get gss -A || true | |
| kubectl get pods -n e2e-test || true | |
| kubectl get events -n e2e-test || true | |
| restartCount=$(kubectl get pod -n kruise-game-system --no-headers | awk '{print $4}') | |
| if [ "${restartCount}" -ne "0" ]; then | |
| kubectl get pod -n kruise-game-system --no-headers | |
| echo "Kruise-game has restarted, abort!!!" | |
| kubectl get pod -n kruise-game-system --no-headers | awk '{print $1}' | xargs kubectl logs -p -n kruise-game-system | |
| exit 1 | |
| else | |
| echo "Kruise-game has not restarted" | |
| fi | |
| exit ${EXIT_CODE:-0} | |
| - name: Make audit logs readable | |
| if: always() | |
| run: | | |
| sudo chmod -R a+r /tmp/kind-audit || chmod -R a+r /tmp/kind-audit || true | |
| ls -l /tmp/kind-audit || true | |
| - name: Upload audit logs artifact | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: kind-audit-logs-1.26 | |
| path: /tmp/kind-audit | |
| if-no-files-found: ignore |