
name: E2E Setup
description: Common setup for E2E tests

runs:
  using: "composite"
  steps:
    - name: Checkout code
      uses: actions/checkout@v4

    - name: Import environment variables from file
      run: |
        cat ".github/env" >> "$GITHUB_ENV"
        echo "E2E_DIAGNOSTIC_DIRECTORY=$(mktemp -d)" >> "$GITHUB_ENV"
      shell: bash

    - name: Install Go
      uses: actions/setup-go@v5
      with:
        go-version: '${{ env.golang-version }}'
        check-latest: true

    - name: Build images
      run: |
        export SHELL="/bin/bash"
        make build image
      shell: bash

    - name: Start kind cluster
      uses: helm/kind-action@v1.12.0
      with:
        version: ${{ env.kind-version }}
        node_image: ${{ env.kind-image }}
        wait: 300s
        config: ./test/e2e/kind-conf.yaml
        cluster_name: e2e

    - name: Wait for cluster to finish bootstrapping
      run: |
        echo "Waiting for all nodes to be ready..."
        kubectl wait --for=condition=Ready nodes --all --timeout=120s
        kubectl get nodes
        echo "Waiting for all pods to be ready..."
        kubectl wait --for=condition=Ready pods --all --all-namespaces --timeout=300s
        kubectl get pods -A
        echo "Cluster information"
        kubectl cluster-info
      shell: bash

    - name: Load images
      run: |
        make test-e2e-images
        kubectl apply -f scripts/kind-rbac.yaml
      shell: bash
