Integration Tests (Kind) #43
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: Integration Tests (Kind) | |
| on: | |
| workflow_dispatch: | |
| schedule: | |
| - cron: "0 6 * * *" | |
| permissions: | |
| contents: read | |
| jobs: | |
| integration-kind: | |
| name: Kind API integration suite | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 90 | |
| env: | |
| REGISTRY: ghcr.io/sympozium-ai/sympozium | |
| TAG: latest | |
| SYMPOZIUM_NAMESPACE: sympozium-system | |
| TEST_NAMESPACE: default | |
| CLAUDE_TOKEN: ${{ secrets.CLAUDE_TOKEN }} | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version-file: go.mod | |
| cache: true | |
| - name: Create Kind cluster | |
| uses: helm/kind-action@v1.10.0 | |
| with: | |
| cluster_name: sympozium-ci | |
| wait: 120s | |
| - name: Build all Sympozium images | |
| run: make docker-build TAG=${TAG} | |
| - name: Load images into Kind | |
| run: | | |
| set -euo pipefail | |
| for img in controller apiserver ipc-bridge webhook agent-runner \ | |
| channel-telegram channel-slack channel-discord channel-whatsapp \ | |
| skill-k8s-ops skill-sre-observability skill-github-gitops skill-memory; do | |
| kind load docker-image ${REGISTRY}/${img}:${TAG} --name sympozium-ci | |
| done | |
| - name: Install Helm | |
| uses: azure/setup-helm@v4 | |
| - name: Install Sympozium via Helm | |
| run: | | |
| set -euo pipefail | |
| # Apply CRDs first (Helm doesn't upgrade CRDs). | |
| kubectl apply --server-side --force-conflicts -f charts/sympozium/crds/ | |
| # Install Gateway API CRDs. | |
| kubectl apply --server-side --force-conflicts -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.1/standard-install.yaml | |
| # Install via Helm with local image tag. | |
| helm install sympozium charts/sympozium/ \ | |
| --namespace sympozium-system --create-namespace \ | |
| --set image.tag=${TAG} \ | |
| --set certManager.enabled=false \ | |
| --set webhook.enabled=false \ | |
| --skip-crds | |
| - name: Wait for core deployments | |
| run: | | |
| set -euo pipefail | |
| kubectl rollout status deployment/sympozium-controller-manager -n sympozium-system --timeout=300s | |
| kubectl rollout status deployment/sympozium-apiserver -n sympozium-system --timeout=300s | |
| kubectl rollout status deployment/sympozium-otel-collector -n sympozium-system --timeout=300s | |
| - name: Run API smoke tests | |
| run: bash ./test/integration/test-api-smoke.sh | |
| - name: Dump cluster state on failure | |
| if: failure() | |
| run: | | |
| set +e | |
| echo "== Pods ==" | |
| kubectl get pods -A -o wide | |
| echo "== Sympozium system events ==" | |
| kubectl get events -n sympozium-system --sort-by=.lastTimestamp | tail -200 | |
| echo "== Controller logs ==" | |
| kubectl logs -n sympozium-system deploy/sympozium-controller-manager --tail=400 | |
| echo "== Apiserver logs ==" | |
| kubectl logs -n sympozium-system deploy/sympozium-apiserver --tail=400 |