|
1 | 1 | # Development Guide: Main Feast Repository |
2 | 2 | > Please see [Development Guide](https://docs.feast.dev/project/development-guide) for project level development instructions. |
3 | 3 |
|
4 | | -### Overview |
| 4 | +## Overview |
5 | 5 | This guide is targeted at developers looking to contribute to Feast components in |
6 | 6 | the main Feast repository: |
7 | 7 | - [Feast Python SDK / CLI](#feast-python-sdk-%2F-cli) |
@@ -10,6 +10,20 @@ the main Feast repository: |
10 | 10 |
|
11 | 11 | ## Making a pull request |
12 | 12 |
|
| 13 | +### Pull request checklist |
| 14 | +A quick list of things to keep in mind as you're making changes: |
| 15 | +- As you make changes |
| 16 | + - Make your changes in a [forked repo](#forking-the-repo) (instead of making a branch on the main Feast repo) |
| 17 | + - [Sign your commits](#signing-off-commits) as you go (to avoid DCO checks failing) |
| 18 | + - [Rebase from master](#incorporating-upstream-changes-from-master) instead of using `git pull` on your PR branch |
| 19 | + - Install [pre-commit hooks](#pre-commit-hooks) to ensure all the default linters / formatters are run when you push. |
| 20 | +- When you make the PR |
| 21 | + - Make a pull request from the forked repo you made |
| 22 | + - Ensure you add a GitHub **label** (i.e. a kind tag to the PR (e.g. `kind/bug` or `kind/housekeeping`)) or else checks will fail. |
| 23 | + - Ensure you leave a release note for any user facing changes in the PR. There is a field automatically generated in the PR request. You can write `NONE` in that field if there are no user facing changes. |
| 24 | + - Please run tests locally before submitting a PR (e.g. for Python, the [local integration tests](#local-integration-tests)) |
| 25 | + - Try to keep PRs smaller. This makes them easier to review. |
| 26 | + |
13 | 27 | ### Forking the repo |
14 | 28 | Fork the Feast Github repo and clone your fork locally. Then make changes to a local branch to the fork. |
15 | 29 |
|
@@ -26,6 +40,9 @@ pre-commit install --hook-type pre-commit --hook-type pre-push |
26 | 40 | 3. On push, the pre-commit hook will run. This runs `make format` and `make lint`. |
27 | 41 |
|
28 | 42 | ### Signing off commits |
| 43 | +> :warning: Warning: using the default integrations with IDEs like VSCode or IntelliJ will not sign commits. |
| 44 | +> When you submit a PR, you'll have to re-sign commits to pass the DCO check. |
| 45 | +
|
29 | 46 | Use git signoffs to sign your commits. See |
30 | 47 | https://docs.github.com/en/github/authenticating-to-github/managing-commit-signature-verification for details |
31 | 48 |
|
@@ -96,13 +113,27 @@ make test-python |
96 | 113 | > - Ensure Feast Python SDK / CLI is not configured with configuration overrides (ie `~/.feast/config` should be empty). |
97 | 114 |
|
98 | 115 | ### Integration Tests |
99 | | -To get tests running, you'll need to have GCP / AWS / Redis setup: |
| 116 | +There are two sets of tests you can run: |
| 117 | +1. Local integration tests (for faster development) |
| 118 | +2. Full integration tests (requires cloud environment setups) |
| 119 | + |
| 120 | +#### Local integration tests |
| 121 | +To get local integration tests running, you'll need to have Redis setup: |
100 | 122 |
|
101 | 123 | Redis |
102 | 124 | 1. Install Redis: [Quickstart](https://redis.io/topics/quickstart) |
103 | 125 | 2. Run `redis-server` |
104 | 126 |
|
105 | | -GCP |
| 127 | +Now run `make test-python-universal-local` |
| 128 | + |
| 129 | +#### Full integration tests |
| 130 | +To test across clouds, on top of setting up Redis, you also need GCP / AWS / Snowflake setup. |
| 131 | + |
| 132 | +> Note: you can manually control what tests are run today by inspecting |
| 133 | +> [RepoConfiguration](https://github.com/feast-dev/feast/blob/master/sdk/python/tests/integration/feature_repos/repo_configuration.py) |
| 134 | +> and commenting out tests that are added to `DEFAULT_FULL_REPO_CONFIGS` |
| 135 | +
|
| 136 | +**GCP** |
106 | 137 | 1. Install the [Cloud SDK](https://cloud.google.com/sdk/docs/install). |
107 | 138 | 2. Then run login to gcloud: |
108 | 139 | ``` |
@@ -111,18 +142,19 @@ GCP |
111 | 142 | ``` |
112 | 143 | 3. Export `GCLOUD_PROJECT=[your project]` to your .zshrc |
113 | 144 |
|
114 | | -AWS |
| 145 | +**AWS** |
115 | 146 | 1. TODO(adchia): flesh out setting up AWS login (or create helper script) |
116 | 147 | 2. Modify `RedshiftDataSourceCreator` to use your credentials |
117 | 148 |
|
118 | | -Then run `make test-python-integration`. Note that for GCP / AWS, this will create new temporary tables / datasets. |
| 149 | +**Snowflake** |
| 150 | +- See https://signup.snowflake.com/ |
| 151 | + |
| 152 | +Then run `make test-python-integration`. Note that for Snowflake / GCP / AWS, this will create new temporary tables / datasets. |
119 | 153 |
|
120 | 154 | ## Feast Java Serving |
121 | 155 | See [Java contributing guide](java/CONTRIBUTING.md) |
122 | 156 |
|
123 | 157 | ## Feast Go Client |
124 | | -:warning: Feast Go Client will move to its own standalone repository in the future. |
125 | | - |
126 | 158 | ### Environment Setup |
127 | 159 | Setting up your development environment for Feast Go SDK: |
128 | 160 |
|
|