Repository navigation
feat: Add dualStack server option to the Feast operator #3553
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
| # .github/workflows/operator-e2e-integration-tests.yml | |
| name: Operator e2e tests | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| types: | |
| - opened | |
| - synchronize | |
| - labeled | |
| paths: | |
| - 'infra/**' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| operator-e2e-tests: | |
| timeout-minutes: 40 | |
| if: | |
| ((github.event.action == 'labeled' && (github.event.label.name == 'approved' || github.event.label.name == 'lgtm' || github.event.label.name == 'ok-to-test')) || | |
| (github.event.action != 'labeled' && (contains(github.event.pull_request.labels.*.name, 'ok-to-test') || contains(github.event.pull_request.labels.*.name, 'approved') || contains(github.event.pull_request.labels.*.name, 'lgtm')))) && | |
| github.repository == 'feast-dev/feast' | |
| runs-on: ubuntu-latest | |
| services: | |
| kind: | |
| # Specify the Kubernetes version | |
| image: kindest/node:v1.30.6 | |
| env: | |
| KIND_CLUSTER: "operator-e2e-cluster" | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Free Disk Space (Ubuntu) | |
| uses: jlumbroso/free-disk-space@v1.3.1 | |
| with: | |
| android: true | |
| dotnet: true | |
| haskell: true | |
| large-packages: false | |
| docker-images: false | |
| swap-storage: false | |
| tool-cache: false | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: 1.26.0 | |
| - name: Create KIND cluster | |
| run: | | |
| cat <<EOF | kind create cluster --name $KIND_CLUSTER --wait 10m --config=- | |
| kind: Cluster | |
| apiVersion: kind.x-k8s.io/v1alpha4 | |
| nodes: | |
| - role: control-plane | |
| extraMounts: | |
| - hostPath: /mnt/kind | |
| containerPath: /var/lib/containerd | |
| EOF | |
| - name: Set up kubernetes context | |
| run: | | |
| kubectl config use-context kind-$KIND_CLUSTER | |
| echo "kind context is switched to cluster kind-$KIND_CLUSTER" | |
| - name: Run E2E tests | |
| run: | | |
| # Run the e2e tests | |
| cd infra/feast-operator/ | |
| make test-e2e | |
| - name: Run Previous version tests | |
| run: | | |
| # Run the previous version tests | |
| cd infra/feast-operator/ | |
| make test-previous-version | |
| - name: Clean up docker images | |
| if: always() | |
| run: | | |
| docker images --format '{{.Repository}}:{{.Tag}}' | grep 'feast' | xargs -r docker rmi -f | |
| docker system prune -a -f | |
| - name: Run Upgrade tests | |
| run: | | |
| # Run the upgrade tests | |
| cd infra/feast-operator/ | |
| make test-upgrade | |
| - name: Debug KIND Cluster when there is a failure | |
| if: failure() | |
| run: | | |
| echo "=== FeatureStore CRs and conditions ===" | |
| kubectl get featurestores.feast.dev --all-namespaces -o yaml || true | |
| echo "" | |
| echo "=== Pods ===" | |
| kubectl get pods --all-namespaces -o wide | |
| echo "" | |
| echo "=== Pod details for non-Running pods ===" | |
| for ns in $(kubectl get ns -o jsonpath='{.items[*].metadata.name}'); do | |
| for pod in $(kubectl get pods -n "$ns" --field-selector='status.phase!=Running' -o jsonpath='{.items[*].metadata.name}' 2>/dev/null); do | |
| echo "--- Pod $ns/$pod ---" | |
| kubectl describe pod "$pod" -n "$ns" 2>/dev/null | tail -30 | |
| echo "--- Logs ---" | |
| kubectl logs "$pod" -n "$ns" --all-containers --tail=50 2>/dev/null || true | |
| done | |
| done | |
| echo "" | |
| echo "=== Operator logs ===" | |
| kubectl logs -n feast-operator-system deploy/feast-operator-controller-manager --tail=100 2>/dev/null || true | |
| echo "" | |
| echo "=== Cluster RBAC for feast ===" | |
| kubectl get clusterroles,clusterrolebindings -o name | grep feast || true | |
| echo "" | |
| echo "=== Events ===" | |
| kubectl get events --all-namespaces --sort-by='.lastTimestamp' | tail -50 | |
| echo "" | |
| echo "=== Nodes ===" | |
| kubectl describe nodes | |
| - name: Clean up | |
| if: always() | |
| run: | | |
| # Delete the KIND cluster after tests | |
| kind delete cluster --name kind-$KIND_CLUSTER |