You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by zh...@apache.org on 2022/12/22 08:18:18 UTC
[dolphinscheduler-sdk-python] branch main updated: [doc] Release document add (#52)
This is an automated email from the ASF dual-hosted git repository.
zhongjiajie pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler-sdk-python.git
The following commit(s) were added to refs/heads/main by this push:
new b389018 [doc] Release document add (#52)
b389018 is described below
commit b389018dffdc0f9dcf97cfc6554a5b3b3fabdc5e
Author: Jay Chung <zh...@gmail.com>
AuthorDate: Thu Dec 22 16:18:13 2022 +0800
[doc] Release document add (#52)
---
.gitignore | 3 +
RELEASE.md | 191 +++++++++++++++++++++++++++++++++++++++++++++++++++++++------
2 files changed, 178 insertions(+), 16 deletions(-)
diff --git a/.gitignore b/.gitignore
index aaf4a8f..d91f0a0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,3 +18,6 @@ htmlcov/
# the pydolphinscheduler config
config.yaml
+
+# Release
+release/
diff --git a/RELEASE.md b/RELEASE.md
index acdd6ce..adf8d28 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -19,32 +19,191 @@ under the License.
# Release
-**PyDolphinScheduler** office release is in [ASF Distribution Directory](https://downloads.apache.org/dolphinscheduler/),
-and it should be released together with [apache-dolphinscheduler](https://github.com/apache/dolphinscheduler).
+**PyDolphinScheduler** office release is in [ASF Distribution Directory](#release-to-apache-distribution),
+but we also have a [PyPi](#release-to-pypi) repository for Python package distribution for convenience.
-<!--
-## To ASF Distribution Directory
-
-You could release to [ASF Distribution Directory](https://downloads.apache.org/dolphinscheduler/) according to
-[release guide](../../docs/docs/en/contribute/release/release-prepare.md) in DolphinScheduler
-website.
--->
+## Prepare
-## To PyPi
+* Change `version` in `setup.py`.
+* Remove `sphinx-multiversion` dependency in `setup.py`, we still can not fix this issue
+ [Distribute tarball and wheel error with direct dependency](https://github.com/apache/dolphinscheduler/issues/12238)
+* Change `version_ext` about the dolphinscheduler version current support, the syntax is respect [pep-044](https://peps.python.org/pep-0440/#version-specifiers)
+* Run all test locally, `tox -e local-ci && tox -e local-integrate-test`, after you start dolphinscheduler to
+ pass `local-integrate-test`
-[PyPI](https://pypi.org), Python Package Index, is a repository of software for the Python programming language.
-
-### Install or Upgrade package
+## Build and Sign Package
We use [build](https://pypi.org/project/build/) to build package, and [twine](https://pypi.org/project/twine/) to
upload package to PyPi. You could first install and upgrade them by:
-```bash
+```shell
+# Install or upgrade dependencies
python3 -m pip install --upgrade pip build twine
+
+# Add Tag
+VERSION=<VERSION> # The version of the package you want to release, e.g. 1.2.3
+REMOTE=<REMOTE> # The git remote name, we usually use `origin` or `remote`
+git tag -a "${VERSION}" -m "Release v${VERSION}"
+git push "${REMOTE}" --tags
+
+# Build
+python setup.py pre_clean && python -m build
+
+# Sign
+cd dist
+gpg --batch --yes --armor --detach-sig apache-dolphinscheduler-"${VERSION}".tar.gz
+gpg --batch --yes --armor --detach-sig apache_dolphinscheduler-"${VERSION}"-py3-none-any.whl
+shasum -a 512 apache-dolphinscheduler-"${VERSION}".tar.gz > apache-dolphinscheduler-"${VERSION}".tar.gz.sha512
+shasum -b -a 512 apache_dolphinscheduler-"${VERSION}"-py3-none-any.whl > apache_dolphinscheduler-"${VERSION}"-py3-none-any.whl.sha512
+```
+
+## Create Draft Release
+
+Go to [GitHub release page](https://github.com/apache/dolphinscheduler-sdk-python/releases) and create a release
+based to the specific tag, and set it as pre-release.
+
+## Release to Apache Distribution
+
+### To Apache SVN
+
+```shell
+svn co https://dist.apache.org/repos/dist/dev/dolphinscheduler/ release/dolphinscheduler
+mkdir -p release/dolphinscheduler/python/"${VERSION}"
+cp apache*dolphinscheduler-"${VERSION}"* release/dolphinscheduler/python/"${VERSION}"
+
+cd release/dolphinscheduler && svn add python && svn commit python -m "Release Apache DolphinScheduler-SDK-Python version ${VERSION}"
```
-It is highly recommended [releasing package to TestPyPi](#release-to-testpypi) first, to check whether the
-package is correct, and then [release to PyPi](#release-to-pypi).
+### Vote Mail
+
+Create a new vote in dev@dolphinscheduler.apache.org
+
+```text
+TITLE: [VOTE] Release Apache DolphinScheduler SDK Python <VERSION>
+
+BODY:
+
+Hello DolphinScheduler Community,
+
+This is a call for vote to release Apache DolphinScheduler SDK Python version <VERSION>
+
+Release notes: https://github.com/apache/dolphinscheduler-sdk-python/releases/tag/<VERSION>
+
+The release candidates: https://dist.apache.org/repos/dist/dev/dolphinscheduler/python/<VERSION>/
+
+Git tag for the release: https://github.com/apache/dolphinscheduler-sdk-python/tree/<VERSION>
+
+Release Commit ID: https://github.com/apache/dolphinscheduler-sdk-python/commit/02bc4f44cdd136622e403506f6474da0c7fa36fb
+
+Keys to verify the Release Candidate: https://dist.apache.org/repos/dist/dev/dolphinscheduler/KEYS
+
+The vote will be open for at least 72 hours or until necessary number of votes are reached.
+
+Please vote accordingly:
+
+[ ] +1 approve
+[ ] +0 no opinion
+[ ] -1 disapprove with the reason
+
+Checklist for reference:
+
+[ ] Download links are valid.
+[ ] Checksums and PGP signatures are valid.
+[ ] Source code artifacts have correct names matching the current release.
+[ ] LICENSE and NOTICE files are correct for each DolphinScheduler repo.
+[ ] All files have license headers if necessary.
+[ ] No compiled archives bundled in source archive.
+```
+
+### Check Release Candidate
+
+- Artifacts in staging repository are published with `.asc`, and `sha512` files.
+- `LICENSE` and `NOTICE` are in source codes and distribution package.
+- Check `sha512` and `gpg` signature with following command:
+
+```shell
+VERSION=<VERSION> # The version of the package you want to release, e.g. 1.2.3
+# Download source code
+curl https://dist.apache.org/repos/dist/dev/dolphinscheduler/python/"${VERSION}"/apache-dolphinscheduler-"${VERSION}".tar.gz > apache-dolphinscheduler-"${VERSION}".tar.gz
+curl https://dist.apache.org/repos/dist/dev/dolphinscheduler/python/"${VERSION}"/apache-dolphinscheduler-"${VERSION}".tar.gz.asc > apache-dolphinscheduler-"${VERSION}".tar.gz.asc
+curl https://dist.apache.org/repos/dist/dev/dolphinscheduler/python/"${VERSION}"/apache-dolphinscheduler-"${VERSION}".tar.gz.sha512 > apache-dolphinscheduler-"${VERSION}".tar.gz.sha512
+# Download binary code
+curl https://dist.apache.org/repos/dist/dev/dolphinscheduler/python/"${VERSION}"/apache_dolphinscheduler-"${VERSION}"-py3-none-any.whl > apache_dolphinscheduler-"${VERSION}"-py3-none-any.whl
+curl https://dist.apache.org/repos/dist/dev/dolphinscheduler/python/"${VERSION}"/apache_dolphinscheduler-"${VERSION}"-py3-none-any.whl.asc > apache_dolphinscheduler-"${VERSION}"-py3-none-any.whl.asc
+curl https://dist.apache.org/repos/dist/dev/dolphinscheduler/python/"${VERSION}"/apache_dolphinscheduler-"${VERSION}"-py3-none-any.whl.sha512 > apache_dolphinscheduler-"${VERSION}"-py3-none-any.whl.sha512
+
+# Verify sha512
+sha512sum --check apache-dolphinscheduler-"${VERSION}".tar.gz.sha512
+sha512sum --check apache_dolphinscheduler-"${VERSION}"-py3-none-any.whl.sha512
+# Verify gpg signature
+curl https://dist.apache.org/repos/dist/release/dolphinscheduler/KEYS > KEYS
+gpg --import KEYS
+gpg --verify apache-dolphinscheduler-"${VERSION}".tar.gz.asc
+gpg --verify apache_dolphinscheduler-"${VERSION}"-py3-none-any.whl.asc
+```
+
+Vote result should follow these:
+
+- PMC vote is +1 binding, all others is +1 no binding.
+- Within 72 hours, you get at least 3 (+1 binding), and have more +1 than -1. Vote pass.
+- **Send the closing vote mail to announce the result**. When count the binding and no binding votes, please list the names of voters. An example like this:
+
+ ```text
+ [RESULT][VOTE] Release Apache SkyWalking Python version $VERSION
+
+ 72+ hours passed, we’ve got ($NUMBER) +1 bindings (and ... +1 non-bindings):
+
+ (list names)
+ +1 bindings:
+ xxx
+ ...
+
+ +1 non-bindings:
+ xxx
+ ...
+
+ Thank you for voting, I’ll continue the release process.
+ ```
+
+### Publish
+
+- Move source codes tar balls and distributions to https://dist.apache.org/repos/dist/release/dolphinscheduler/, **you can do this only if you are a PMC member**.
+
+ ```shell
+ svn mv https://dist.apache.org/repos/dist/dev/dolphinscheduler/python/"${VERSION}" https://dist.apache.org/repos/dist/release/dolphinscheduler/python/"${VERSION}"
+ ```
+
+- Update [GitHub release page](https://github.com/apache/dolphinscheduler-sdk-python/releases) and set it as formal release.
+- Send ANNOUNCE email to `dev@dolphinscheduler.apache.org` and `announce@apache.org`.
+
+ ```text
+ Subject: [ANNOUNCE] Apache DolphinScheduler SDK Python $VERSION Released
+
+ Content:
+
+ Hi Community,
+
+ We are glad to announce the release of Apache DolphinScheduler SDK Python $VERSION.
+
+ Apache DolphinScheduler SDK Python is an API for Apache DolphinScheduler which allow you definition your workflow by Python code, aka workflow-as-codes.
+
+ DolphinScheduler is a distributed and easy-to-extend visual workflow scheduler system,
+ dedicated to solving the complex task dependencies in data processing, making the scheduler system out of the box for data processing.
+
+ Download Links: https://dolphinscheduler.apache.org/#/en-us/download
+
+ Release Notes: https://github.com/apache/dolphinscheduler-sdk-python/releases/tag/$VERSION
+
+ DolphinScheduler Resources:
+ - Issue: https://github.com/apache/dolphinscheduler-sdk-python/issues/
+ - Mailing list: dev@dolphinscheduler.apache.org
+ - Website: https://dolphinscheduler.apache.org
+ - Documents: https://dolphinscheduler.apache.org/python/$VERSION
+ ```
+
+## Release to PyPi
+
+[PyPI](https://pypi.org), Python Package Index, is a repository of software for the Python programming language.
### Release to TestPyPi