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
* update kfp server api for kfp sdk (#12120)
with the recent proto change the kfp server no long accepts body as an
acceptable parameter, due to this breaking change the min kfp-server-api
in kfp sdk needs to be bumped and a new kfp sdk needs to be released.
Signed-off-by: Humair Khan <[email protected]>
* chore: update release instructions (#12117)
Signed-off-by: Humair Khan <[email protected]>
---------
Signed-off-by: Humair Khan <[email protected]>
@@ -97,7 +97,10 @@ if you only want to use or contribute to this repo.
97
97
1. Clone github.com/kubeflow/pipelines repo into `$KFP_REPO`.
98
98
2. `cd $KFP_REPO`
99
99
100
-
### Cutting a release branch (Optional)
100
+
### Cutting a release branch
101
+
102
+
KFP releases are required to be cut from a release branch. This includes all python packages.
103
+
Release branches must be scoped to a minor version. The following components should always have all future patch versions tagged and released from their respective minor branch. For example, you would cut a release for SDK 2.14.1 from the release-2.14 branch, the same with KFP backend 2.14.4, kfp-kubernetes 2.14.2, and so on.
101
104
102
105
1. Choose a good commit on master branch with commit hash as `$COMMIT_SHA`.
103
106
1. Choose the next release branch's `$MINOR_VERSION` in format `x.y`, e.g. `1.0`, `1.1`...
@@ -113,9 +116,9 @@ if you only want to use or contribute to this repo.
113
116
### Before release
114
117
115
118
Do the following things before a release:
116
-
1. **(Do this step only when releasing from a NON-master release branch)**
119
+
1. Cherry-picking
117
120
118
-
Note: Instead of following this step to cherrypick all PRs, you can also manually cherrypick commits from master branch to release branch, if the number of PRs to cherrypick is minimal. Command for manual cherrypick:
121
+
Note: Instead of following this step to cherry-pick all PRs, you can also manually cherry-pick commits from the master branch to release branch, if the number of PRs to cherry-pick is minimal. Command for manual cherry-pick:
119
122
120
123
```
121
124
git cherry-pick <commit-id>
@@ -177,7 +180,6 @@ If not, contact the KFP team to determine if the failure(s) would block the rele
177
180
178
181
### Releasing from release branch
179
182
180
-
Note, when releasing from master, all the below mentions of "release branch" means master branch.
181
183
182
184
1. Choose the release's complete`$VERSION` following semantic versioning, e.g.
183
185
- `1.0.0-rc.1`
@@ -193,8 +195,8 @@ Note, when releasing from master, all the below mentions of "release branch" mea
193
195
```bash
194
196
cd ./test/release && TAG=$VERSION BRANCH=$BRANCH make release
195
197
```
196
-
197
-
It will prompt you whether to push it to release branch. Press `y` and hit `Enter`.
198
+
This script updates the version values for various manifests, and generated code.
199
+
Once finished, it will prompt you whether to push it to release branch. You can inspect the changes by navigating to the temporary directory it creates. Once you are comfortable with the changes, press `y` and hit `Enter`.
198
200
199
201
Note, the script will clone kubeflow/pipelines repo into a temporary location on your computer, make those changes and attempt to push to upstream, so that it won't interfere with your current git repo.
200
202
@@ -209,51 +211,106 @@ The target tag should be `$VERSION`.
209
211
210
212
### Releasing KFP Python Packages
211
213
212
-
1. Release `kfp-server-api` python packages to PyPI.
214
+
All Python packages must be released with wheel and source packages. When doing a minor release, you *must* make a release for all Python packages as well, even if there are no new changes there. This includes:
215
+
216
+
* kfp-pipeline-spec
217
+
* kfp
218
+
* kfp-kubernetes
219
+
* kfp-server-api
220
+
213
221
222
+
> [!Note]
223
+
> When making a release, if something goes wrong, always yank the release in pypi, **do not delete** the package and try to re-upload it with the same version, pypi won't let you do this even though it lets you delete the package. In such an event, yank the release and do a new release with a new patch version.
224
+
225
+
When performing these releases, you should adhere to the order presented below.
226
+
227
+
1. Release `kfp-pipeline-spec` Python packages to PyPI.
228
+
Update the version in`setup.py` found in`api/v2alpha1/python/setup.py`.
214
229
```bash
215
-
git checkout $BRANCH
216
-
git pull upstream $BRANCH
217
-
cd backend/api/v2beta1/python_http_client
218
-
rm -r dist
219
-
python3 setup.py --quiet sdist
220
-
python3 -m twine upload dist/*
230
+
git checkout -b release-X.Y
231
+
pip3 install twine --user
232
+
cd api
233
+
make python
234
+
cd v2alpha1/python
235
+
twine check dist/*
236
+
twine upload dist/*
221
237
```
222
238
223
-
1. Release `kfp` python packages to PyPI. (Note: Please skip this step for backend release, this step will be handled by SDK release.)
239
+
1. Release `kfp`Python packages to PyPI.
224
240
225
241
Update the SDK version in`version.py` and `readthedocs``versions.json`, example PR [here](https://github.com/kubeflow/pipelines/pull/11715/files).
226
242
227
243
```bash
244
+
git checkout -b release-X.Y
228
245
pip3 install twine --user
229
-
cd sdk/python
230
-
./build.sh kfp-$VERSION.tar.gz
231
-
python3 -m twine upload kfp-$VERSION.tar.gz
246
+
cd sdk
247
+
make python
248
+
cd python
249
+
twine check dist/*
250
+
twine upload dist/*
232
251
```
233
252
234
253
!!! The file name must contain the version. See <https://github.com/kubeflow/pipelines/issues/1292>
235
254
236
-
1. Release `kfp-kubernetes` python packages to PyPI. (Note: Please skip this step for backend release, this step will be handled by SDK release.)
255
+
** Update Readthedocs **
256
+
257
+
* Create a GitHub release for KFP SDK release. [Here's an example](https://github.com/kubeflow/pipelines/releases/tag/sdk-2.14.1) reference for a template.
258
+
* When creating a release create a new tag `sdk-x.y.z`
259
+
* Navigate to the readthedocs website [here](https://app.readthedocs.org/projects/kubeflow-pipelines/), login if needed
260
+
* You should see a new build under "Versions" section for this new tag, ensure it succeeds.
261
+
* Click "Settings"
262
+
* Set the default version to `sdk-x.y.z` (the version we just built and released)
263
+
* Set the default branch to be the release branch `release-x.y.z`
264
+
265
+
1. Release `kfp-kubernetes` Python packages to PyPI.
237
266
238
267
Update the KFP Kubernetes SDK version in `__init__.py` and `readthedocs` `versions.json`, example PR [here](https://github.com/kubeflow/pipelines/pull/11380).
239
268
240
269
```bash
241
-
export KFP_KUBERNETES_VERSION=
270
+
git checkout -b release-X.Y
242
271
pip3 install twine --user
272
+
cd kubernetes_platform
273
+
make python
274
+
cd python
275
+
twine check dist/*
276
+
twine upload dist/*
277
+
278
+
# Cut release-the-docs branch
279
+
export KFP_KUBERNETES_VERSION= # Set this to the version being released x.y.z
243
280
cd kubernetes_platform/python
244
281
./create_release_branch.sh
245
282
```
283
+
284
+
Follow the output push instructions to **commit and push the read the docs release branch to KFP**.
246
285
247
-
Follow the output push instructions to **commit and push the branch to KFP**, then do the following:
286
+
> [!Note]
287
+
> Note that kfp-kubernetes package has a separate readthedocs site and requires that a new branch be pushed for readthedocs to be able to host multiple pages from the same repo.
288
+
> Every new patch version for this package requires us to create a new release branch purely for readthedocs purposes. However always cut this branch from the `release-X.Y` branch.
289
+
290
+
** Update Readthedocs **
291
+
Once the branch is updated, you need to add this version to readthedocs. Follow these steps:
292
+
293
+
* Navigate to the package section on the readthedocs website [here](https://app.readthedocs.org/projects/kfp-kubernetes/).
294
+
* Click "Add version"
295
+
* Enter the branch `kfp-kubernetes-x.y.z` where x.y.z is the version you released, if you pushed it and it's not showing up, press the "Resync Versions" button and try again
296
+
* Add this version, navigate back to the "Versions" section, and you should see a build, make sure it succeeds before moving onto the next section.
297
+
* Go to Settings
298
+
* Set this version as the default version.
299
+
* Click Save
300
+
* Click "View Docs" to navigate to the docs page and ensure the new version shows up as the default.
301
+
302
+
1. Release `kfp-server-api` Python packages to PyPI.
248
303
249
304
```bash
250
-
# set this to the appropriate version that matches what was set in __init__.py earlier
251
-
export KFP_KUBERNETES_VERSION=
252
-
cd kubernetes_platform/python
253
-
./release.sh
305
+
git checkout $BRANCH
306
+
git pull upstream $BRANCH
307
+
cd backend/api/v2beta1/python_http_client
308
+
rm -r dist
309
+
python3 setup.py --quiet sdist
310
+
python3 -m twine upload dist/*
254
311
```
255
-
256
-
Note that this script will build the package, test install, and push to PyPi.
312
+
313
+
Push the changes to the `release-X.Y` branch.
257
314
258
315
### Create GitHub Release
259
316
@@ -269,7 +326,7 @@ fill in the description. Detailed steps:
269
326
<pre>
270
327
To deploy Kubeflow Pipelines in an existing cluster, follow the instruction in [here](https://www.kubeflow.org/docs/components/pipelines/operator-guides/installation/)
@@ -284,7 +341,7 @@ fill in the description. Detailed steps:
284
341
<pre>
285
342
To deploy Kubeflow Pipelines in an existing cluster, follow the instruction in [here](https://www.kubeflow.org/docs/components/pipelines/operator-guides/installation/).
286
343
287
-
Install kfp-server-api package (python 3.9 above) by running:
344
+
Install kfp-server-api package (Python 3.9 above) by running:
NOTE, kfp python SDK is **NOT** included and released separately.
354
+
NOTE, kfp Python SDK is **NOT** included and released separately.
298
355
</pre>
299
356
300
357
### Sync Master Branch with latest release
301
358
302
-
1. **(Do this step only when releasing from a NON-master release branch)**
303
-
Update master branch to the same version and include latest changelog:
359
+
1. Update master branch to the same version and include latest changelog:
304
360
305
361
```bash
306
362
git checkout master
@@ -350,7 +406,8 @@ Starting from version **2.14**, all major and minor versions (X.Y) of the Kubefl
350
406
All KFP components sharing the same major and minor version (X.Y) are guaranteed to be API-compatible.
351
407
352
408
***Backward Compatibility:**
353
-
The KFP project will make a *best effort* to maintain backward compatibility within a given **major version** for all Python SDK packages.
409
+
The KFP project aims to maintain backward compatibility within a given **major version**for all Python SDK packages, though there may be exceptions at times.
410
+
354
411
Specifically:
355
412
356
413
* Newer versions of the KFP Python SDK within the same major release (e.g., 2.x) should continue to functionwith older versions of the KFP backend.
0 commit comments