Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 76 additions & 0 deletions .github/workflows/pr_registration_integration_tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: pr-registration-integration-tests

on:
pull_request_target:
types:
- opened
- synchronize
- labeled

permissions:
actions: write
pull-requests: read

jobs:
integration-test-registration-local:
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
steps:
- uses: actions/checkout@v4
with:
ref: refs/pull/${{ github.event.pull_request.number }}/merge
submodules: recursive
persist-credentials: false
- name: Setup pixi
uses: prefix-dev/setup-pixi@v0.8.1
with:
pixi-version: v0.63.1
environments: registration-tests
cache: true
- name: Run registration integration tests (local)
run: make test-python-registration

integration-test-registration-ci:
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
steps:
- uses: actions/checkout@v4
with:
ref: refs/pull/${{ github.event.pull_request.number }}/merge
submodules: recursive
persist-credentials: false
- name: Authenticate to Google Cloud
uses: 'google-github-actions/auth@v1'
with:
credentials_json: '${{ secrets.GCP_SA_KEY }}'
- name: Set up gcloud SDK
uses: google-github-actions/setup-gcloud@v1
with:
project_id: ${{ secrets.GCP_PROJECT_ID }}
- name: Set up AWS SDK
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-west-2
- name: Cache Hadoop tarball
uses: actions/cache@v4
with:
path: ~/hadoop-3.4.2.tar.gz
key: hadoop-3.4.2
- name: Install Hadoop dependencies
run: make install-hadoop-dependencies-ci
- name: Setup pixi
uses: prefix-dev/setup-pixi@v0.8.1
with:
pixi-version: v0.63.1
environments: registration-tests
cache: true
- name: Run registration integration tests (CI)
run: make test-python-registration-ci
2 changes: 1 addition & 1 deletion .github/workflows/registry-rest-api-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ jobs:
- name: Setup and Run Registry Rest API tests
run: |
echo "Running Registry REST API tests..."
uv run pytest sdk/python/tests/integration/registration/rest_api/test_registry_rest_api.py --integration -s
uv run pytest -c sdk/python/pytest.ini sdk/python/tests/integration/rest_api/test_registry_rest_api.py --integration -s

- name: Clean up docker images
if: always()
Expand Down
30 changes: 15 additions & 15 deletions .secrets.baseline
Original file line number Diff line number Diff line change
Expand Up @@ -1317,14 +1317,14 @@
"filename": "sdk/python/tests/integration/feature_repos/repo_configuration.py",
"hashed_secret": "d90e76ef629fb00c95f4e84fec29fbda111e2392",
"is_verified": false,
"line_number": 461
"line_number": 455
},
{
"type": "Secret Keyword",
"filename": "sdk/python/tests/integration/feature_repos/repo_configuration.py",
"hashed_secret": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8",
"is_verified": false,
"line_number": 463
"line_number": 457
}
],
"sdk/python/tests/integration/feature_repos/universal/data_sources/file.py": [
Expand Down Expand Up @@ -1409,31 +1409,31 @@
"line_number": 35
}
],
"sdk/python/tests/integration/registration/rest_api/resource/feast_config_rhoai.yaml": [
"sdk/python/tests/integration/registration/test_universal_registry.py": [
{
"type": "Secret Keyword",
"filename": "sdk/python/tests/integration/registration/rest_api/resource/feast_config_rhoai.yaml",
"hashed_secret": "3b8d743308b7ce47d6c053b97c16a8e0eeb6356d",
"filename": "sdk/python/tests/integration/registration/test_universal_registry.py",
"hashed_secret": "53e9042a36213bf85ef29a4371896aef8ba9196a",
"is_verified": false,
"line_number": 8
"line_number": 126
}
],
"sdk/python/tests/integration/registration/rest_api/resource/postgres.yaml": [
"sdk/python/tests/integration/rest_api/resource/feast_config_rhoai.yaml": [
{
"type": "Secret Keyword",
"filename": "sdk/python/tests/integration/registration/rest_api/resource/postgres.yaml",
"hashed_secret": "f37a74d82869756054661d6501b29cdfec0fdb38",
"filename": "sdk/python/tests/integration/rest_api/resource/feast_config_rhoai.yaml",
"hashed_secret": "3b8d743308b7ce47d6c053b97c16a8e0eeb6356d",
"is_verified": false,
"line_number": 9
"line_number": 8
}
],
"sdk/python/tests/integration/registration/test_universal_registry.py": [
"sdk/python/tests/integration/rest_api/resource/postgres.yaml": [
{
"type": "Secret Keyword",
"filename": "sdk/python/tests/integration/registration/test_universal_registry.py",
"hashed_secret": "53e9042a36213bf85ef29a4371896aef8ba9196a",
"filename": "sdk/python/tests/integration/rest_api/resource/postgres.yaml",
"hashed_secret": "f37a74d82869756054661d6501b29cdfec0fdb38",
"is_verified": false,
"line_number": 126
"line_number": 9
}
],
"sdk/python/tests/unit/infra/offline_stores/contrib/postgres_offline_store/test_postgres.py": [
Expand Down Expand Up @@ -1539,5 +1539,5 @@
}
]
},
"generated_at": "2026-03-01T19:07:31Z"
"generated_at": "2026-03-02T17:53:50Z"
}
18 changes: 13 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,7 @@ test-python-integration: ## Run Python integration tests (CI)
uv run python -m pytest --tb=short -v -n 8 --integration --color=yes --durations=10 --timeout=1200 --timeout_method=thread --dist loadgroup \
-k "(not snowflake or not test_historical_features_main)" \
-m "not rbac_remote_integration_test" \
--ignore=sdk/python/tests/integration/registration \
--log-cli-level=INFO -s \
sdk/python/tests

Expand All @@ -198,13 +199,11 @@ test-python-integration-parallel: ## Run integration tests with enhanced paralle
test-python-integration-local: ## Run Python integration tests (local dev mode)
FEAST_IS_LOCAL_TEST=True \
FEAST_LOCAL_ONLINE_CONTAINER=True \
HADOOP_HOME=$$HOME/hadoop \
CLASSPATH="$$( $$HADOOP_HOME/bin/hadoop classpath --glob ):$$CLASSPATH" \
HADOOP_USER_NAME=root \
uv run python -m pytest --tb=short -v -n auto --color=yes --integration --durations=10 --timeout=1200 --timeout_method=thread --dist loadgroup \
-k "not test_lambda_materialization and not test_snowflake_materialization" \
-m "not rbac_remote_integration_test" \
-m "not rbac_remote_integration_test and not ray_offline_stores_only" \
--ignore=sdk/python/tests/integration/compute_engines/ray_compute \
--ignore=sdk/python/tests/integration/registration \
--log-cli-level=INFO -s \
sdk/python/tests

Expand All @@ -213,7 +212,7 @@ test-python-integration-rbac-remote: ## Run Python remote RBAC integration tests
FEAST_LOCAL_ONLINE_CONTAINER=True \
uv run python -m pytest --tb=short -v -n 8 --color=yes --integration --durations=10 --timeout=1200 --timeout_method=thread --dist loadgroup \
-k "not test_lambda_materialization and not test_snowflake_materialization" \
-m "rbac_remote_integration_test" \
-m "rbac_remote_integration_test and not ray_offline_stores_only" \
--log-cli-level=INFO -s \
sdk/python/tests

Expand Down Expand Up @@ -245,6 +244,15 @@ test-python-integration-dbt: ## Run dbt integration tests
python -m pytest tests/integration/dbt/test_dbt_integration.py -v --tb=short
@echo "✓ dbt integration tests completed successfully!"

test-python-registration: ## Run Python registration integration tests (local)
pixi run -e registration-tests test

test-python-registration-ci: ## Run Python registration integration tests (CI)
HADOOP_HOME=$$HOME/hadoop \
CLASSPATH="$$( $$HADOOP_HOME/bin/hadoop classpath --glob ):$$CLASSPATH" \
HADOOP_USER_NAME=root \
pixi run -e registration-tests test-ci

test-python-universal-duckdb-offline: ## Run Python DuckDB offline store integration tests
pixi run -e duckdb-tests test

Expand Down
Loading
Loading