test: Reorganize testing structure #141
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: CentralDashboard Integration Test | |
on: | |
pull_request: | |
paths: | |
- components/centraldashboard/** | |
- components/access-management/** | |
- components/profile-controller/** | |
- releasing/version/VERSION | |
- .github/workflows/central_dashboard_integration_test.yaml | |
branches: | |
- main | |
- v*-branch | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event.number }} | |
cancel-in-progress: true | |
env: | |
DASHBOARD_IMG: ghcr.io/kubeflow/dashboard/dashboard | |
ACCESS_MANAGEMENT_IMG: ghcr.io/kubeflow/dashboard/access-management | |
PROFILE_CONTROLLER_IMG: ghcr.io/kubeflow/dashboard/profile-controller | |
TAG: integration-test | |
jobs: | |
integration-test: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Install KinD | |
run: ./testing/gh-actions/install_kind.sh | |
- name: Create KinD Cluster | |
run: kind create cluster --config testing/gh-actions/kind-1-33.yaml | |
- name: Install kustomize | |
run: ./testing/gh-actions/install_kustomize.sh | |
- name: Install Istio | |
run: ./testing/gh-actions/install_istio.sh | |
- name: Create Kubeflow Namespace | |
run: kubectl create namespace kubeflow | |
- name: Build KFAM Image | |
run: | | |
cd components/access-management | |
make docker-build-multi-arch IMG="${ACCESS_MANAGEMENT_IMG}" TAG="${TAG}" | |
kind load docker-image "${ACCESS_MANAGEMENT_IMG}:${TAG}" | |
cd ../.. | |
- name: Build and Deploy Profile Controller with KFAM | |
run: | | |
cd components/profile-controller | |
make docker-build-multi-arch IMG="${PROFILE_CONTROLLER_IMG}" TAG="${TAG}" | |
kind load docker-image "${PROFILE_CONTROLLER_IMG}:${TAG}" | |
cd config | |
kustomize build overlays/kubeflow \ | |
| sed "s|ghcr.io/kubeflow/dashboard/profile-controller:[a-zA-Z0-9_.-]*|${PROFILE_CONTROLLER_IMG}:${TAG}|g" \ | |
| sed "s|ghcr.io/kubeflow/dashboard/access-management:[a-zA-Z0-9_.-]*|${ACCESS_MANAGEMENT_IMG}:${TAG}|g" \ | |
| kubectl apply -f - | |
kubectl wait --for=condition=Available deployment -n kubeflow profiles-deployment --timeout=300s | |
kubectl wait --for=condition=Ready pods -n kubeflow -l kustomize.component=profiles --timeout=300s | |
- name: Build and Deploy Central Dashboard | |
run: | | |
./testing/shared/deploy_component.sh \ | |
"components/centraldashboard" \ | |
"${DASHBOARD_IMG}" \ | |
"${TAG}" \ | |
"manifests" \ | |
"overlays/kserve" | |
kubectl wait --for=condition=Ready pods -n kubeflow -l app=dashboard --timeout=300s | |
kubectl wait --for=condition=Available deployment -n kubeflow dashboard --timeout=300s | |
- name: Create Test Profile for Dashboard Testing | |
run: | | |
kubectl apply -f components/profile-controller/integration/resources/profile-dashboard-test.yaml | |
for i in {1..60}; do | |
if kubectl get namespace test-dashboard-profile >/dev/null 2>&1; then | |
break | |
fi | |
echo "Waiting for namespace... (attempt $i/60)" | |
sleep 5 | |
done | |
if ! kubectl get namespace test-dashboard-profile >/dev/null 2>&1; then | |
exit 1 | |
fi | |
kubectl get profile test-dashboard-profile | |
kubectl get namespace test-dashboard-profile | |
- name: Validate Service | |
run: | | |
./testing/shared/test_service.sh validate-service dashboard kubeflow | |
- name: Start Port Forward for Dashboard Testing | |
run: | | |
./testing/shared/test_service.sh port-forward dashboard kubeflow 8082 80 | |
- name: Test Dashboard Health | |
run: | | |
./testing/shared/test_service.sh test-health dashboard kubeflow 8082 | |
- name: Test Dashboard Web Interface | |
run: | | |
curl -f "http://localhost:8082/" >/dev/null 2>&1 | |
curl -f "http://localhost:8082/healthz" >/dev/null 2>&1 | |
RESPONSE=$(curl -s "http://localhost:8082/" | head -c 100) | |
if [[ -n "$RESPONSE" ]]; then | |
echo "Dashboard is serving content: ${RESPONSE:0:50}..." | |
else | |
exit 1 | |
fi | |
kubectl get service dashboard -n kubeflow | |
kubectl get pods -n kubeflow -l app=dashboard | |
- name: Test Dashboard Performance | |
run: | | |
./testing/shared/test_service.sh performance-test dashboard kubeflow 8082 80 10 | |
- name: Test Dashboard Metrics | |
run: | | |
./testing/shared/test_service.sh test-metrics dashboard kubeflow 8082 | |
- name: Check Dashboard Logs | |
run: | | |
./testing/shared/test_service.sh check-logs dashboard kubeflow 50 | |
- name: Check for Errors in Logs | |
run: | | |
./testing/shared/test_service.sh check-errors dashboard kubeflow | |
- name: Test Dashboard Configuration | |
run: | | |
kubectl get configmap dashboard-config -n kubeflow | |
kubectl describe configmap dashboard-config -n kubeflow | |
- name: Test Virtual Service (if Istio is configured) | |
run: | | |
kubectl get virtualservice dashboard -n kubeflow | |
- name: Stop Port Forward | |
run: | | |
./testing/shared/test_service.sh stop-port-forward dashboard kubeflow 8082 | |
- name: Cleanup Test Resources | |
run: | | |
kubectl delete profile test-dashboard-profile --ignore-not-found=true | |
for i in {1..30}; do | |
if ! kubectl get namespace test-dashboard-profile >/dev/null 2>&1; then | |
break | |
fi | |
echo "Waiting for namespace deletion... (attempt $i/30)" | |
sleep 5 | |
done |