Skip to content

Wire in agent skelton (#421) #1129

Wire in agent skelton (#421)

Wire in agent skelton (#421) #1129

Workflow file for this run

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