Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
d044588
fix: Fixing broken links to feast documentation on java readme and co…
breno-costa Jun 30, 2022
80ea7a9
fix: Change numpy version on setup.py and upgrade it to resolve depen…
breno-costa Jun 30, 2022
8e2a375
chore: Verification workflow in build wheels that ensures the wheels …
kevjumba Jun 30, 2022
86e9efd
fix: Fix grpc and update protobuf (#2894)
kevjumba Jun 30, 2022
056cfa1
feat: Support retrieval from multiple feature views with different jo…
yongheng Jun 30, 2022
51df8be
fix: Bump version of Guava to mitigate cve (#2896)
achals Jun 30, 2022
8abc2ef
feat: Add column reordering to `write_to_offline_store` (#2876)
felixwang9817 Jun 30, 2022
9b97fca
feat: Add pages for individual Features to the Feast UI (#2850)
kindalime Jul 1, 2022
0ceb39c
fix snowflake testing (#2903)
sfc-gh-madkins Jul 2, 2022
f758f9e
feat: Add snowflake online store (#2902)
sfc-gh-madkins Jul 3, 2022
8828240
chore: Change pytest fixtures to be function-scoped instead of sessio…
felixwang9817 Jul 5, 2022
0ec7d1a
fix: Change the feature store plan method to public modifier (#2904)
breno-costa Jul 5, 2022
0159f38
feat: Add custom JSON table tab w/ formatting (#2851)
kindalime Jul 5, 2022
eaf4022
docs: Grammatically updated the quickstart guide docs (#2913)
prasadzende Jul 6, 2022
38b28ca
feat: Add interfaces for batch materialization engine (#2901)
achals Jul 6, 2022
38fd001
fix: Revert "feat: Add snowflake online store (#2902)" (#2909)
kevjumba Jul 6, 2022
adf3212
chore: Refactor StreamFeatureViewMeta to FeatureViewMeta and dedupe (…
achals Jul 6, 2022
dcd8ec9
chore: Clean up push source tests (#2912)
felixwang9817 Jul 6, 2022
109ee9c
feat: Add to_remote_storage method to RetrievalJob (#2916)
achals Jul 6, 2022
66038c7
chore: Implement to_remote_storage for supported offline stores (#2918)
achals Jul 7, 2022
495f5f0
chore: Update Feast UI dependency to reflect recent changes (#2924)
adchia Jul 8, 2022
9ae22a1
chore: Bump moment from 2.29.2 to 2.29.4 in /ui (#2926)
dependabot[bot] Jul 8, 2022
130746e
fix: Fix the go build and use CgoArrowAllocator to prevent incorrect …
kevjumba Jul 8, 2022
292adc2
ci: Fixing local integration tests, defaulting to test containers (#2…
adchia Jul 11, 2022
bdeb4ae
fix: Fix build wheels workflow to install apache-arrow correctly (#2932)
kevjumba Jul 11, 2022
9fc81a2
chore: Update docs with new release workflow (#2898)
kevjumba Jul 12, 2022
4394696
ci: Add a nightly CI job for integration tests (#2652)
achals Jul 12, 2022
16ae902
fix: Resolve small typo in README file (#2930)
sudohainguyen Jul 12, 2022
040c910
fix: Deprecate 3.7 wheels and fix verification workflow (#2934)
kevjumba Jul 12, 2022
b917540
fix: Fix night ci syntax error and update readme (#2935)
kevjumba Jul 12, 2022
054446c
chore(deps): Bump moment from 2.29.3 to 2.29.4 in /sdk/python/feast/u…
dependabot[bot] Jul 12, 2022
6f79069
feat: Add an experimental lambda-based materialization engine (#2923)
achals Jul 14, 2022
1603c9e
fix: Fix nightly ci again (#2939)
kevjumba Jul 14, 2022
268f28d
chore: Fixes and Readme for python<>go interface (#2936)
achals Jul 15, 2022
ba2dcf1
fix: Update gopy to point to fork to resolve github annotation errors…
kevjumba Jul 15, 2022
d25df83
chore: More automated upgrades in repo definitions (#2941)
achals Jul 15, 2022
476fccd
chore(deps): Bump aws-java-sdk-s3 from 1.12.110 to 1.12.261 in /java/…
dependabot[bot] Jul 16, 2022
d593351
chore: Add project metadata to registry (#2938)
adchia Jul 18, 2022
d3868c5
chore: Upgrade GCP dependencies (#2945)
chhabrakadabra Jul 19, 2022
b69eadc
ci: Remove code coverage for now to keep from blocking other prs (#2950)
kevjumba Jul 19, 2022
3e3489c
chore: Remove UI from quickstart colab (#2951)
adchia Jul 19, 2022
92785b8
chore: Widen dependencies (#2928)
chhabrakadabra Jul 19, 2022
d0d27a3
fix: Version entity serialization mechanism and fix issue with int64 …
achals Jul 20, 2022
6d7b38a
docs: Include docs updates for release process. Clean up old docs (#2…
adchia Jul 20, 2022
a965af9
docs: Add docs for batch materialization engine (#2959)
achals Jul 20, 2022
46d11bc
chore(deps): Bump terser from 5.10.0 to 5.14.2 in /ui (#2961)
dependabot[bot] Jul 20, 2022
8534f69
fix: Fix typo in CONTRIBUTING.md (#2955)
jeongukjae Jul 20, 2022
23c09c8
feat: Add CustomSourceOptions to SavedDatasetStorage (#2958)
wdhorton Jul 20, 2022
5e45228
fix: Add dummy alias to pull_all_from_table_or_query (#2956)
ikrizanic Jul 21, 2022
661c053
fix: Do not allow same column to be reused in data sources (#2965)
felixwang9817 Jul 21, 2022
ffab04c
chore(deps): Bump terser from 5.13.1 to 5.14.2 in /sdk/python/feast/u…
dependabot[bot] Jul 21, 2022
a36a695
feat: Add Go option to `feast serve` command (#2966)
felixwang9817 Jul 21, 2022
a233d3f
chore: Fix test asserts for offline store write and improve some erro…
achals Jul 22, 2022
aa2a86a
chore: Add separate `go_feature_serving` flag (#2968)
felixwang9817 Jul 22, 2022
1479519
chore: Update docs for offline and online stores (#2946)
kevjumba Jul 22, 2022
a15fcb4
docs: Fix docs for Go feature retrieval (#2967)
felixwang9817 Jul 22, 2022
ac55ce2
fix: Fixing Spark min / max entity df event timestamps range return o…
levpickis Jul 25, 2022
5ae2a34
chore: Update helm chart name (#2969)
felixwang9817 Jul 25, 2022
e4507ac
fix: Remove hard-coded integration test setup for AWS & GCP (#2970)
kevjumba Jul 26, 2022
3ce5139
fix: Spark source support table with pattern "db.table" (#2606)
kfiring Jul 26, 2022
26f6b69
fix: Fix file offline store logic for feature views without ttl (#2971)
felixwang9817 Jul 26, 2022
5edf4b0
fix: Switch mysql log string to use regex (#2976)
felixwang9817 Jul 27, 2022
f2696e0
ci: Fix pip install issues from grpcio version mismatches (#2984)
adchia Jul 29, 2022
2680f7b
fix: Refactor testing and sort out unit and integration tests (#2975)
kevjumba Jul 29, 2022
61a194c
docs: Update intro documentation page (#2982)
adchia Jul 29, 2022
2ef71fc
feat: Add Snowflake online store (again) (#2922)
sfc-gh-madkins Jul 29, 2022
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
51 changes: 45 additions & 6 deletions .github/workflows/build_wheels.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
name: build_wheels

# Call this workflow from other workflows in the repository by specifying "uses: ./.github/workflows/build_wheels.yml"
on: [workflow_dispatch, workflow_call]
# Developers who are starting a new release should use this workflow to ensure wheels will be built correctly.
# Devs should check out their fork, add a tag to the last master commit on their fork, and run the release off of their fork on the added tag to ensure wheels will be built correctly.
on:
workflow_dispatch:
tags:
- 'v*.*.*'
workflow_call:

jobs:
get-version:
Expand Down Expand Up @@ -60,15 +66,20 @@ jobs:
uses: pypa/cibuildwheel@v2.7.0
env:
CIBW_BUILD: "cp3*_x86_64"
CIBW_SKIP: "cp36-* *-musllinux_x86_64 cp310-macosx_x86_64"
CIBW_SKIP: "cp36-* cp37-* *-musllinux_x86_64 cp310-macosx_x86_64"
CIBW_ARCHS: "native"
CIBW_ENVIRONMENT: >
COMPILE_GO=True PATH=$PATH:/usr/local/go/bin
CIBW_BEFORE_ALL_LINUX: |
curl -o go.tar.gz https://dl.google.com/go/go1.18.2.linux-amd64.tar.gz
tar -C /usr/local -xzf go.tar.gz
go version
yum -y update &&
yum install -y epel-release || yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1).noarch.rpm &&
yum install -y https://apache.jfrog.io/artifactory/arrow/centos/$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1)/apache-arrow-release-latest.rpm &&
yum install -y --enablerepo=epel arrow-devel # For C++
CIBW_BEFORE_ALL_MACOS: |
brew install apache-arrow
curl -o python.pkg https://www.python.org/ftp/python/3.9.12/python-3.9.12-macosx10.9.pkg
sudo installer -pkg python.pkg -target /
# There's a `git restore` in here because `make install-go-ci-dependencies` is actually messing up go.mod & go.sum.
Expand All @@ -93,6 +104,7 @@ jobs:
CIBW_BEFORE_BUILD: |
git status
git restore go.mod go.sum
brew install apache-arrow
- uses: actions/upload-artifact@v2
with:
name: wheels
Expand Down Expand Up @@ -134,11 +146,11 @@ jobs:

verify-python-wheels:
runs-on: ${{ matrix.os }}
needs: [build-python-wheel, build-source-distribution]
needs: [build-python-wheel, build-source-distribution, get-version]
strategy:
matrix:
os: [ubuntu-latest, macos-10.15 ]
python-version: [ "3.7", "3.8", "3.9", "3.10"]
python-version: [ "3.8", "3.9", "3.10"]
from-source: [ True, False ]
env:
# this script is for testing servers
Expand All @@ -153,6 +165,7 @@ jobs:
else
echo "Succeeded!"
fi
VERSION_WITHOUT_PREFIX: ${{ needs.get-version.outputs.version_without_prefix }}
steps:
- name: Setup Python
id: setup-python
Expand All @@ -174,12 +187,24 @@ jobs:
cd dist/
pip install wheel
for f in *.whl; do pip install $f || true; done
- name: Install apache-arrow on ubuntu
if: ${{ matrix.from-source && matrix.os == 'ubuntu-latest' }}
run: |
sudo apt update
sudo apt install -y -V ca-certificates lsb-release wget
wget https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt install -y -V ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt update
sudo apt install -y -V libarrow-dev
- name: Install apache-arrow on macos
if: ${{ matrix.from-source && matrix.os == 'macos-10.15' && matrix.python-version != '3.10' }}
run: brew install apache-arrow
- name: Install dist with go
if: ${{ matrix.from-source && (matrix.python-version != '3.10' || matrix.os == 'ubuntu-latest')}}
env:
COMPILE_GO: "True"
run: |
pip install 'grpcio-tools==1.44.0' 'pybindgen==0.22.0'
pip install 'grpcio-tools==1.48.0' 'pybindgen==0.22.0'
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.26.0
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1.0
pip install dist/*tar.gz
Expand All @@ -190,6 +215,20 @@ jobs:
- name: Install OS X dependencies
if: matrix.os == 'macos-10.15'
run: brew install coreutils
# Validate that the feast version installed is not development and is the correct version of the tag we ran it off of.
- name: Validate Feast Version
run: |
VERSION_REGEX='[0-9]+\.[0-9]+\.[0-9]+'
OUTPUT_REGEX='^Feast SDK Version: "$VERSION_REGEX"$'
VERSION_OUTPUT=$(feast version)
VERSION=$(echo $VERSION_OUTPUT | grep -oE "$VERSION_REGEX")
OUTPUT=$(echo $VERSION_OUTPUT | grep -E "$REGEX")
if [ -n "$OUTPUT" ] && [ "$VERSION" = "$VERSION_WITHOUT_PREFIX" ]; then
echo "Correct Feast Version Installed"
else
echo "$VERSION_OUTPUT from installed wheel is not in the correct format or doesn't have the right version $VERSION."
exit 1
fi
- name: Smoke test
run: |
feast init test_repo
Expand All @@ -206,5 +245,5 @@ jobs:
feast apply
echo "$TEST_SCRIPT" > run-and-wait.sh
pip install cffi
printf "\ngo_feature_retrieval: True" >> feature_store.yaml
printf "\ngo_feature_serving: True" >> feature_store.yaml
bash run-and-wait.sh feast serve
18 changes: 16 additions & 2 deletions .github/workflows/linter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,14 @@ jobs:
${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-pip-
- name: Install pip-tools
run: pip install pip-tools
- name: Install apache-arrow on ubuntu
run: |
sudo apt update
sudo apt install -y -V ca-certificates lsb-release wget
wget https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt install -y -V ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt update
sudo apt install -y -V libarrow-dev
- name: Install dependencies
run: |
make compile-protos-go
Expand All @@ -63,7 +71,13 @@ jobs:
- name: Upgrade pip version
run: |
pip install --upgrade "pip>=21.3.1,<22.1"
- name: Install dependencies
run: make install-go-proto-dependencies
- name: Install apache-arrow on ubuntu
run: |
sudo apt update
sudo apt install -y -V ca-certificates lsb-release wget
wget https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt install -y -V ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt update
sudo apt install -y -V libarrow-dev
- name: Lint go
run: make lint-go
12 changes: 12 additions & 0 deletions .github/workflows/master_only.yml
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,18 @@ jobs:
${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-pip-
- name: Install pip-tools
run: pip install pip-tools
- name: Install apache-arrow on ubuntu
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt update
sudo apt install -y -V ca-certificates lsb-release wget
wget https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt install -y -V ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt update
sudo apt install -y -V libarrow-dev
- name: Install apache-arrow on macos
if: matrix.os == 'macOS-latest'
run: brew install apache-arrow
- name: Install dependencies
run: make install-python-ci-dependencies
- name: Setup Redis Cluster
Expand Down
191 changes: 191 additions & 0 deletions .github/workflows/nightly-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
name: nightly-ci

on:
schedule:
- cron: '00 08 * * *' # early morning 08:00 AM UTC, which is 1 AM PST/4 AM EST.

# concurrency is currently broken, see details https://github.com/actions/runner/issues/1532
#concurrency:
# group: pr-integration-tests-${{ github.event.pull_request.number }}
# cancel-in-progress: true

jobs:
check_date:
runs-on: ubuntu-latest
name: Check latest commit
outputs:
WAS_EDITED: ${{ steps.check_date.outputs.WAS_EDITED }}
steps:
- uses: actions/checkout@v2
with:
ref: master
- id: check_date
name: Check if there were commits in the last day
if: ${{ github.event_name == 'schedule' }}
run: echo '::set-output name=WAS_EDITED::'$(test -n "$(git log --format=%H --since='24 hours ago')" && echo 'true' || echo 'false')
build-docker-image:
needs: [check_date]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: master
submodules: recursive
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
install: true
- 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: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
- name: Set ECR image tag
id: image-tag
run: echo "::set-output name=DOCKER_IMAGE_TAG::`git rev-parse HEAD`"
- name: Cache Public ECR Image
id: lambda_python_3_9
uses: actions/cache@v2
with:
path: ~/cache
key: lambda_python_3_9
- name: Handle Cache Miss (pull public ECR image & save it to tar file)
if: steps.cache-primes.outputs.cache-hit != 'true'
run: |
mkdir -p ~/cache
docker pull public.ecr.aws/lambda/python:3.9
docker save public.ecr.aws/lambda/python:3.9 -o ~/cache/lambda_python_3_9.tar
- name: Handle Cache Hit (load docker image from tar file)
if: steps.cache-primes.outputs.cache-hit == 'true'
run: |
docker load -i ~/cache/lambda_python_3_9.tar
- name: Build and push
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: feast-python-server
run: |
docker build \
--file sdk/python/feast/infra/feature_servers/aws_lambda/Dockerfile \
--tag $ECR_REGISTRY/$ECR_REPOSITORY:${{ steps.image-tag.outputs.DOCKER_IMAGE_TAG }} \
--load \
.
docker push $ECR_REGISTRY/$ECR_REPOSITORY:${{ steps.image-tag.outputs.DOCKER_IMAGE_TAG }}
outputs:
DOCKER_IMAGE_TAG: ${{ steps.image-tag.outputs.DOCKER_IMAGE_TAG }}
integration-test-python:
needs: [check_date, build-docker-image]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python-version: [ "3.8" ]
os: [ ubuntu-latest ]
env:
OS: ${{ matrix.os }}
PYTHON: ${{ matrix.python-version }}
services:
redis:
image: redis
ports:
- 6379:6379
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v2
with:
ref: master
submodules: recursive
- name: Setup Python
uses: actions/setup-python@v2
id: setup-python
with:
python-version: ${{ matrix.python-version }}
architecture: x64
- name: Setup Go
id: setup-go
uses: actions/setup-go@v2
with:
go-version: 1.18.0
- name: Set up gcloud SDK
uses: google-github-actions/setup-gcloud@v0
with:
project_id: ${{ secrets.GCP_PROJECT_ID }}
service_account_key: ${{ secrets.GCP_SA_KEY }}
export_default_credentials: true
- name: Use gcloud CLI
run: gcloud info
- 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: Use AWS CLI
run: aws sts get-caller-identity
- name: Upgrade pip version
run: |
pip install --upgrade "pip>=21.3.1,<22.1"
- name: Get pip cache dir
id: pip-cache
run: |
echo "::set-output name=dir::$(pip cache dir)"
- name: pip cache
uses: actions/cache@v2
with:
path: |
${{ steps.pip-cache.outputs.dir }}
/opt/hostedtoolcache/Python
/Users/runner/hostedtoolcache/Python
key: ${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-pip-${{ hashFiles(format('**/py{0}-ci-requirements.txt', env.PYTHON)) }}
restore-keys: |
${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-pip-
- name: Install pip-tools
run: pip install pip-tools
- name: Install apache-arrow on ubuntu
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt update
sudo apt install -y -V ca-certificates lsb-release wget
wget https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt install -y -V ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt update
sudo apt install -y -V libarrow-dev
- name: Install apache-arrow on macos
if: matrix.os == 'macOS-latest'
run: brew install apache-arrow
- name: Install dependencies
run: make install-python-ci-dependencies
- name: Setup Redis Cluster
run: |
docker pull vishnunair/docker-redis-cluster:latest
docker run -d -p 6001:6379 -p 6002:6380 -p 6003:6381 -p 6004:6382 -p 6005:6383 -p 6006:6384 --name redis-cluster vishnunair/docker-redis-cluster
- name: Test python
if: ${{ always() }} # this will guarantee that step won't be canceled and resources won't leak
env:
FEAST_SERVER_DOCKER_IMAGE_TAG: ${{ needs.build-docker-image.outputs.DOCKER_IMAGE_TAG }}
FEAST_USAGE: "False"
IS_TEST: "True"
SNOWFLAKE_CI_DEPLOYMENT: ${{ secrets.SNOWFLAKE_CI_DEPLOYMENT }}
SNOWFLAKE_CI_USER: ${{ secrets.SNOWFLAKE_CI_USER }}
SNOWFLAKE_CI_PASSWORD: ${{ secrets.SNOWFLAKE_CI_PASSWORD }}
SNOWFLAKE_CI_ROLE: ${{ secrets.SNOWFLAKE_CI_ROLE }}
SNOWFLAKE_CI_WAREHOUSE: ${{ secrets.SNOWFLAKE_CI_WAREHOUSE }}
run: pytest -n 8 --cov=./ --cov-report=xml --color=yes sdk/python/tests --integration --durations=5 --timeout=1200 --timeout_method=thread
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./coverage.xml
flags: integrationtests
env_vars: OS,PYTHON
fail_ci_if_error: true
verbose: true
Loading