Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Now, add your Apache GPG key to the Flink’s KEYS file in the release repository at dist.apache.org. Follow the instructions listed at the top of these files. (Note: Only PMC members have write access to the release repository. If you end up getting 403 errors ask on the mailing list for assistance.) PMC member can refer following scripts to add your Apache GPG key to the KEYS in the release repository.

Code Block
languagebash
svn co https://dist.apache.org/repos/dist/release/flink flink-dist-release-repo
cd flink-dist-release-repo
(gpg --list-sigs <YOUR_KEY_ID> && gpg --armor --export <YOUR_KEY_ID>) >> KEYS
svn ci -m "[flink] Add <YOUR_NAME>'s public key"

Configure git to use this key when signing code by giving it your key ID, as follows:

...

Code Block
languagebash
RELEASE_VERSION="2.1.0"
SHORT_RELEASE_VERSION="2.1"
CURRENT_SNAPSHOT_VERSION="$SHORT_RELEASE_VERSION-SNAPSHOT"
NEXT_SNAPSHOT_VERSION="2.2-SNAPSHOT"
SHORT_NEXT_SNAPSHOT_VERSION="2.2"
SHORT_PREVIOUS_RELEASE_VERSION="2.0"

If you are doing a new major/minor release (e.g. 2.0.0, 2.1.0), check out the version of the codebase from which you start the release. This may be HEAD of the master branch branch.

Create a branch for the new version that we want to release before updating the master branch to the next development version:

Code Block
languagebash
$ git checkout master$ git checkout master
$ PREVIOUS_RELEASE_VERSION=$SHORT_PREVIOUS_RELEASE_VERSION CURRENT_RELEASE_VERSION=$SHORT_RELEASE_VERSION tools/releasing/update_playground_links.sh
$ RELEASE_VERSION=$SHORT_RELEASE_VERSION tools/releasing/create_release_branch.sh
$ git checkout master
$ OLD_VERSION=$CURRENT_SNAPSHOT_VERSION NEW_VERSION=$NEXT_SNAPSHOT_VERSION tools/releasing/update_branch_version.sh
$ git checkout release-$SHORT_RELEASE_VERSION

...

Code Block
languagetext
$ svn checkout https://dist.apache.org/repos/dist/dev/flink/flink-statefun-${RELEASE_VERSION}-rc${RC_NUM}
$ cd flink-statefun-${RELEASE_VERSION}-rc${RC_NUM}
$ twine upload --repository-url https://upload.pypi.org/legacy/ \
    apache-flink-statefun-${RELEASE_VERSION}.tar.gz apache-flink-statefun-${RELEASE_VERSION}.tar.gz.asc \
    apache_flink_statefun-${RELEASE_VERSION}-py3-none-any.whl apache_flink_statefun-${RELEASE_VERSION}-py3-none-any.whl.asc

...


Code Block
git tag -s "release-${RELEASE_VERSION}" refs/tags/${TAG} -m "Release Stateful Functions ${RELEASE_VERSION}"

For the GoLang SDK we we also need to push another release tag

Code Block
git tag -s "statefun-sdk-go/v${RELEASE_VERSION}" refs/tags/${TAG} -m "Release Stateful Functions ${RELEASE_VERSION}"

Don't forget to push the tags viato push the tags via
Code Block
git push <remote> refs/tags/release-${RELEASE_VERSION}
git push <remote> refs/tags/statefun-sdk-go/v${RELEASE_VERSION}

Delete the RC tags on the remote repository

Code Block
git push --delete <remote> refs/tags/release-${RELEASE_VERSIONTAG}
git push --delete <remote> refs/tags/statefun-sdk-go/v${RELEASE_VERSION}-rc${RC_NUM}


Mark the version as released in JIRA

...

Note: the official Dockerfiles fetch some artifacts of the target StateFun version from Maven central. After publishing the artifacts, the Maven central repository can take some hours to start serving the new artifacts, so you may want to wait to do this step until you are ready to continue with the "Promote the release" steps below.

Follow the instructions in the flink-statefun-docker repo to build the new Dockerfiles and send an updated manifest to Docker Hub so the new images are built and publishedthe instructions in the flink-statefun-docker repo to build the new Dockerfiles and send an updated manifest to Docker Hub so the new images are built and published.

Create a new release-${SHORT_RELEASE_VERSION} branch in flink-statefun-playground by forking the dev branch.

Make sure that all statefun versions are updated to the new ${SHORT_RELEASE_VERSION} (grep for occurrences of the old version).

Checklist to proceed to the next step

  • Python artifacts released and indexed in the PyPI Repository
  • JavaScript artifacts released and indexed in the npm repository
  • Maven artifacts released and indexed in the Maven Central Repository (usually takes about a day to show up)
  • Source & binary distributions available in the release repository of https://dist.apache.org/repos/dist/release/flink/
  • Dev repository https://dist.apache.org/repos/dist/dev/flink/ is empty
  • Release tagged in the source code repository
  • Release version finalized in JIRA. (Note: Not all committers have administrator access to JIRA. If you end up getting permissions errors ask on the mailing list for assistance)
  • Website contains links to new release binaries and sources in download page
  • For major releases, the front page references the correct new major release version and directs to the correct link
  • Dockerfiles in flink-statefun-docker updated for the new release and pull request opened on the Docker official-images with an updated manifestthe new images have been pushed to Dockerhub
  • flink-statefun-playground contains a new release branch with updated versions (if major/minor release)

Promote the release

Once the release has been finalized, the last step of the process is to promote the release within the project and beyond. Please wait for 24h after finalizing the release in accordance with the ASF release policy.

...