Skip to content

Commit 1ac2186

Browse files
committed
docs: Improve release process notes (#3060)
* docs: Improve release process notes Signed-off-by: Danny Chiao <[email protected]> * more links Signed-off-by: Danny Chiao <[email protected]> * more links Signed-off-by: Danny Chiao <[email protected]> Signed-off-by: Danny Chiao <[email protected]>
1 parent a44fe66 commit 1ac2186

File tree

1 file changed

+61
-18
lines changed

1 file changed

+61
-18
lines changed

docs/project/release-process.md

Lines changed: 61 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,39 +4,81 @@
44

55
For Feast maintainers, these are the concrete steps for making a new release.
66

7-
### Pre-release Verification (Verification that wheels are built correctly) for minor release.
7+
### 1. (for patch releases) Cherry-pick changes into the branch from master
8+
If you were cutting Feast 0.22.3, for example, you might do:
9+
1. `git checkout v0.22-branch` (or `git pull upstream v0.22-branch --rebase` if you've cut a release before)
10+
2. `git cherry-pick [COMMIT FROM MASTER]`
11+
3. `git push upstream v0.22-branch` to commit changes to the release branch
12+
13+
> Note: if you're handling a maintenance release (i.e. an older version), semantic release may complain at you. See
14+
> [Sample PR](https://github.com/feast-dev/feast/commit/40f2a6e13dd7d2a5ca5bff1af378e8712621d4f2) to enable an older
15+
> branch to cut releases.
16+
17+
After this step, you will have all the changes you need in the branch.
18+
19+
### 2. Pre-release verification
20+
A lot of things can go wrong. One of the most common is getting the wheels to build correctly (and not accidentally
21+
building dev wheels from improper tagging or local code changes during the release process).
22+
23+
We verify the wheels building in **your fork** of Feast, not the main feast-dev/feast repo.
24+
25+
#### For minor releases (e.g. v0.22.0)
826
1. Merge upstream master changes into your **fork**. Make sure you are running the workflow off of your fork!
927
2. Create a tag manually for the release on your fork. For example, if you are doing a release for version 0.22.0, create a tag by doing the following.
1028
- Checkout master branch and run `git tag v0.22.0`.
1129
- Run `git push --tags` to push the tag to your forks master branch.
12-
3. Access the `Actions` tab on your github UI on your fork and click the `build_wheels` action. This workflow will build the python sdk wheels for Python 3.8-3.10 on MacOS 10.15 and Linux and verify that these wheels are correct. The publish workflow uses this action to publish the python wheels for a new release to pypi.
30+
> This is important. If you don't have a tag, then the wheels you build will be **dev wheels**, which we can't
31+
> push. The release process will automatically produce a tag for you via Semantic Release.
32+
3. Access the `Actions` tab on your GitHub UI on your fork and click the `build_wheels` action. This workflow will
33+
build the python sdk wheels for Python 3.8-3.10 on MacOS 10.15 and Linux and verify that these wheels are correct.
34+
The publish workflow uses this action to publish the python wheels for a new release to PyPI.
1335
4. Look for the header `This workflow has a workflow_dispatch event trigger` and click `Run Workflow` on the right.
14-
5. Run the workflow off of the tag you just created(`v0.22.0` in this case) and verify that the workflow worked (i.e ensure that all jobs are green).
36+
5. Run the workflow off of the tag you just created(`v0.22.0` in this case, **not** the master branch) and verify that
37+
the workflow worked (i.e ensure that all jobs are green).
1538

16-
### Pre-release Verification (Verification that wheels are built correctly) for patch release.
17-
1. Check out the branch of your release (e.g `v0.22-branch` on your local **fork**) and push this to your fork (`git push -u origin <branch>`).
18-
2. Cherry pick commits that are relevant to the patch release onto your forked branch.
19-
3. Checkout the release branch and add a patch release tag (e.g `v0.22.1`) by running `git tag <tag>`.
20-
4. Push tags to your origin branch with `git push origin <tag>`.
21-
5. Kick off `build_wheels` workflow in the same way as is detailed in the last section on of the patch release tag.
39+
#### For patch releases (e.g. v0.22.3)
40+
You should already have checked out the existing minor release branch from step 1 (e.g. `v0.22-branch`).
41+
1. Push the minor release branch to your fork (`git push -u origin <branch>`).
42+
2. Add a patch release tag (e.g `v0.22.1`) by running `git tag <tag>`.
43+
> This is important. If you don't have a tag, then the wheels you build will be **dev wheels**, which we can't
44+
> push. The release process will automatically produce a tag for you via Semantic Release.
45+
3. Push tags to your **origin branch** (not the upstream feast-dev/feast branch) with `git push origin <tag>`.
46+
4. Kick off `build_wheels` workflow in your fork in the same way as is detailed in the last section, running the
47+
workflow from this tag you just pushed up.
2248

23-
### Release for Python and Java SDK
49+
### 3. Release for Python and Java SDK
2450
1. Generate a [Personal Access Token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) or retrieve your saved personal access token.
2551
* The personal access token should have all of the permissions under the `repo` checkbox.
2652
2. Access the `Actions` tab on the main `feast-dev/feast` repo and find the `release` action.
2753
3. Look for the header `This workflow has a workflow_dispatch event trigger` again and click `Run Workflow` on the right.
2854
* If you are making a minor or major release, you should run it off of the master branch.
2955
* If you are making a patch release, run it off of the corresponding minor release branch.
3056
4. Try the dry run first with your personal access token. If this succeeds, uncheck `Dry Run` and run the release workflow.
31-
5. All of the jobs should succeed besides the UI job which needs to be released separately. Ping a maintainer on Slack to run the UI release manually.
32-
6. Try to install the feast release in your local environment and test out the `feast init` -> `feast apply` workflow to verify as a sanity check that the release worked correctly.
57+
5. Then try running normally (without dry run).
58+
- First, the `release` workflow will kick off. This publishes an NPM package for the Web UI ([NPM package](http://npmjs.com/package/@feast-dev/feast-ui)),
59+
bumps files versions (e.g. helm chart, UI, Java pom.xml files), and generate a changelog using Semantic Release.
60+
All jobs should succeed.
61+
- Second, the `publish` workflow will kick off. This builds all the Python wheels ([PyPI link](https://pypi.org/project/feast/),
62+
publishes helm charts, publishes the Python and Java feature servers to Docker ([DockerHub images](https://hub.docker.com/u/feastdev)),
63+
publishes the Java Serving Client + Datatypes libraries to Maven ([Maven repo](https://mvnrepository.com/artifact/dev.feast))
64+
6. Try to install the Feast Python release in your local environment and test out the `feast init` -> `feast apply`
65+
workflow to verify as a sanity check that the release worked correctly.
66+
7. Verify the releases all show the new version:
67+
- [NPM package](http://npmjs.com/package/@feast-dev/feast-ui)
68+
- [PyPI link](https://pypi.org/project/feast/)
69+
- [DockerHub images (Java + Python feature servers, feature transformation server)](https://hub.docker.com/u/feastdev)
70+
- [Maven repo (feast-datatypes, feast-serving-client)](https://mvnrepository.com/artifact/dev.feast)
71+
72+
### 4. (for minor releases) Post-release steps
73+
#### 4a: Creating a new branch
74+
Create a new branch based on master (i.e. v0.22-branch) and push to the main Feast repo. This will be where
75+
cherry-picks go for future patch releases and where documentation will point.
3376

34-
### (for minor releases) Post-release steps
35-
1. Create a new branch based on master (i.e. v0.22-branch) and push to the main Feast repo. This will be where cherry-picks go for future patch releases and where documentation will point.
36-
2. Write a summary of the release in the GitHub release
37-
1. By default, Semantic Release will pull in messages from commits (features vs fixes, etc). But this is hard to digest still, so it helps to have a high level overview.
77+
#### 4b: Adding a high level summary in the GitHub release notes
78+
By default, Semantic Release will pull in messages from commits (features vs fixes, etc). But this is hard to digest,
79+
so it helps to have a high level overview. See https://github.com/feast-dev/feast/releases for the releases.
3880

39-
### Update documentation
81+
#### 4c: Update documentation
4082

4183
In the Feast Gitbook (ask [Danny Chiao](https://tectonfeast.slack.com/team/U029405HFEU) in Slack for access):
4284
1. Create a new space within the Feast collection
@@ -56,4 +98,5 @@ In the Feast Gitbook (ask [Danny Chiao](https://tectonfeast.slack.com/team/U0294
5698
5. Configure the default space to be your new branch and save
5799

58100
![](new_branch_part_5.png)
59-
6. Verify on docs.feast.dev that this new space is the default (this may take a few minutes to propagate, and your browser cache may be caching the old branch as the default)
101+
6. Verify on [docs.feast.dev](http://docs.feast.dev) that this new space is the default (this may take a few minutes to
102+
propagate, and your browser cache may be caching the old branch as the default)

0 commit comments

Comments
 (0)