Wire in agent skelton (#421) #1129
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 | |
| on: | |
| pull_request: | |
| branches: [main, ssh] | |
| push: | |
| branches: [main, ssh] | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| jobs: | |
| # Subprocess provider suites: hub with embedded kcp + provider binaries as | |
| # host processes, driven over HTTP + kcp dynamic clients. No kind, no Helm, | |
| # no Docker — the cheapest full-kcp coverage we have. The suites share the | |
| # embedded kcp's fixed etcd port (2380), so they run sequentially in one | |
| # job rather than as a matrix. | |
| e2e-providers: | |
| name: Provider suites (embedded kcp subprocesses) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 45 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: v1.26.1 | |
| - name: Run infrastructure provider e2e | |
| run: make e2e-infra-provider | |
| - name: Run quickstart provider e2e | |
| run: make e2e-provider | |
| e2e-standalone: | |
| name: Standalone (embedded kcp + static token) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: v1.26.1 | |
| - name: Install kind | |
| uses: helm/kind-action@v1 | |
| with: | |
| install_only: true | |
| - name: Install Helm | |
| uses: azure/setup-helm@v3 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Add kedge.localhost to /etc/hosts | |
| run: echo "127.0.0.1 kedge.localhost" | sudo tee -a /etc/hosts | |
| - name: Build binaries | |
| run: make build | |
| - name: Add bin/ to PATH | |
| run: echo "$(pwd)/bin" >> $GITHUB_PATH | |
| - name: Build hub Docker image | |
| run: docker build -f deploy/Dockerfile.hub -t ghcr.io/faroshq/kedge-hub:test . | |
| - name: Build agent Docker image | |
| run: docker build -f deploy/Dockerfile.agent -t ghcr.io/faroshq/kedge-agent:test . | |
| - name: Run standalone e2e | |
| env: | |
| KEDGE_HUB_IMAGE: ghcr.io/faroshq/kedge-hub | |
| KEDGE_HUB_IMAGE_PULL_POLICY: Never | |
| KEDGE_HUB_IMAGE_TAG: test | |
| KEDGE_AGENT_IMAGE: ghcr.io/faroshq/kedge-agent | |
| KEDGE_AGENT_IMAGE_TAG: test | |
| KEDGE_AGENT_IMAGE_PULL_POLICY: Never | |
| run: make e2e-standalone E2E_TIMEOUT=50m E2E_FLAGS="-ssh-keepalive-duration=30s -keep-clusters" | |
| - name: Collect kind cluster logs | |
| if: failure() | |
| run: | | |
| mkdir -p /tmp/kind-logs | |
| for cluster in $(kind get clusters 2>/dev/null); do | |
| kind export logs /tmp/kind-logs/$cluster --name "$cluster" || true | |
| done | |
| - name: Upload test logs on failure | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: e2e-standalone-logs | |
| path: | | |
| *.kubeconfig | |
| *.log | |
| /tmp/kind-logs/ | |
| retention-days: 3 | |
| e2e-ssh: | |
| name: SSH Server-Mode (hub-only cluster) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: v1.26.1 | |
| - name: Install kind | |
| uses: helm/kind-action@v1 | |
| with: | |
| install_only: true | |
| - name: Install Helm | |
| uses: azure/setup-helm@v3 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Add kedge.localhost to /etc/hosts | |
| run: echo "127.0.0.1 kedge.localhost" | sudo tee -a /etc/hosts | |
| - name: Build binaries | |
| run: make build | |
| - name: Add bin/ to PATH | |
| run: echo "$(pwd)/bin" >> $GITHUB_PATH | |
| - name: Build hub Docker image | |
| run: docker build -f deploy/Dockerfile.hub -t ghcr.io/faroshq/kedge-hub:test . | |
| - name: Run SSH e2e | |
| env: | |
| KEDGE_HUB_IMAGE: ghcr.io/faroshq/kedge-hub | |
| KEDGE_HUB_IMAGE_PULL_POLICY: Never | |
| KEDGE_HUB_IMAGE_TAG: test | |
| run: make e2e-ssh E2E_TIMEOUT=30m E2E_FLAGS="-keep-clusters" | |
| - name: Collect kind cluster logs | |
| if: failure() | |
| run: | | |
| mkdir -p /tmp/kind-logs | |
| for cluster in $(kind get clusters 2>/dev/null); do | |
| kind export logs /tmp/kind-logs/$cluster --name "$cluster" || true | |
| done | |
| - name: Upload test logs on failure | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: e2e-ssh-logs | |
| path: | | |
| *.kubeconfig | |
| *.log | |
| /tmp/kind-logs/ | |
| retention-days: 3 | |
| e2e-oidc: | |
| name: OIDC (Dex + auth-code flow) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 40 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: v1.26.1 | |
| - name: Install kind | |
| uses: helm/kind-action@v1 | |
| with: | |
| install_only: true | |
| - name: Install Helm | |
| uses: azure/setup-helm@v3 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Add kedge.localhost to /etc/hosts | |
| run: echo "127.0.0.1 kedge.localhost" | sudo tee -a /etc/hosts | |
| - name: Add Dex hostname to /etc/hosts | |
| run: echo "127.0.0.1 dex.kedge-system.svc.cluster.local" | sudo tee -a /etc/hosts | |
| - name: Add dexidp Helm repo | |
| run: | | |
| helm repo add dexidp https://charts.dexidp.io | |
| helm repo update dexidp | |
| - name: Build binaries | |
| run: make build | |
| - name: Add bin/ to PATH | |
| run: echo "$(pwd)/bin" >> $GITHUB_PATH | |
| - name: Build hub Docker image | |
| run: | | |
| docker build -f deploy/Dockerfile.hub \ | |
| -t ghcr.io/faroshq/kedge-hub:test . | |
| - name: Run OIDC e2e | |
| env: | |
| KEDGE_HUB_IMAGE: ghcr.io/faroshq/kedge-hub | |
| KEDGE_HUB_IMAGE_PULL_POLICY: Never | |
| KEDGE_HUB_IMAGE_TAG: test | |
| run: make e2e-oidc E2E_TIMEOUT=35m E2E_FLAGS="-keep-clusters" | |
| - name: Collect kind cluster logs | |
| if: failure() | |
| run: | | |
| mkdir -p /tmp/kind-logs | |
| for cluster in $(kind get clusters 2>/dev/null); do | |
| kind export logs /tmp/kind-logs/$cluster --name "$cluster" || true | |
| done | |
| - name: Upload test logs on failure | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: e2e-oidc-logs | |
| path: | | |
| *.kubeconfig | |
| *.log | |
| /tmp/kind-logs/ | |
| retention-days: 3 | |
| e2e-external-kcp: | |
| name: External KCP (kcp via Helm + static token) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 90 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: v1.26.1 | |
| - name: Install kind | |
| uses: helm/kind-action@v1 | |
| with: | |
| install_only: true | |
| - name: Install Helm | |
| uses: azure/setup-helm@v3 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Add kedge.localhost to /etc/hosts | |
| run: echo "127.0.0.1 kedge.localhost" | sudo tee -a /etc/hosts | |
| - name: Add kcp Helm repo | |
| run: | | |
| helm repo add kcp-dev https://kcp-dev.github.io/helm-charts | |
| helm repo update kcp-dev | |
| - name: Build binaries | |
| run: make build | |
| - name: Add bin/ to PATH | |
| run: echo "$(pwd)/bin" >> $GITHUB_PATH | |
| - name: Build hub Docker image | |
| run: | | |
| docker build -f deploy/Dockerfile.hub \ | |
| -t ghcr.io/faroshq/kedge-hub:test . | |
| - name: Run external KCP e2e | |
| env: | |
| KEDGE_HUB_IMAGE: ghcr.io/faroshq/kedge-hub | |
| KEDGE_HUB_IMAGE_PULL_POLICY: Never | |
| KEDGE_HUB_IMAGE_TAG: test | |
| run: make e2e-external-kcp E2E_TIMEOUT=70m E2E_FLAGS="-keep-clusters" | |
| - name: Collect kind cluster logs | |
| if: failure() | |
| run: | | |
| mkdir -p /tmp/kind-logs | |
| for cluster in $(kind get clusters 2>/dev/null); do | |
| kind export logs /tmp/kind-logs/$cluster --name "$cluster" || true | |
| done | |
| - name: Upload test logs on failure | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: e2e-external-kcp-logs | |
| path: | | |
| *.kubeconfig | |
| *.log | |
| /tmp/kind-logs/ | |
| retention-days: 3 |