You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/project/release-process.md
+61-18Lines changed: 61 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,39 +4,81 @@
4
4
5
5
For Feast maintainers, these are the concrete steps for making a new release.
6
6
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)
8
26
1. Merge upstream master changes into your **fork**. Make sure you are running the workflow off of your fork!
9
27
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.
10
28
- Checkout master branch and run `git tag v0.22.0`.
11
29
- 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.
13
35
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).
15
38
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.
22
48
23
-
### Release for Python and Java SDK
49
+
### 3. Release for Python and Java SDK
24
50
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.
25
51
* The personal access token should have all of the permissions under the `repo` checkbox.
26
52
2. Access the `Actions` tab on the main `feast-dev/feast` repo and find the `release` action.
27
53
3. Look for the header `This workflow has a workflow_dispatch event trigger` again and click `Run Workflow` on the right.
28
54
* If you are making a minor or major release, you should run it off of the master branch.
29
55
* If you are making a patch release, run it off of the corresponding minor release branch.
30
56
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.
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.
33
76
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.
38
80
39
-
### Update documentation
81
+
#### 4c: Update documentation
40
82
41
83
In the Feast Gitbook (ask [Danny Chiao](https://tectonfeast.slack.com/team/U029405HFEU) in Slack for access):
42
84
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
56
98
5. Configure the default space to be your new branch and save
57
99
58
100

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