Replies: 1 comment
-
Vote on the release candidateAs a sub-project from the Apache Flink community, once you have built and individually reviewed the release candidate, please share it for the Apache Flink community-wide review, e.g. VOTE. Here is an email template, please adjust as you see fit. The vote should be open for at least 72 hours, and accept majority approval, with at least 3 PMC affirmative votes. See section Vote on the release candidate in Creating a Flink Release for more details. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
One-time setup instructions
GPG Key
You need to have a GPG key to sign the release artifacts. Please be aware of the ASF-wide release signing guidelines. If you don’t have a GPG key associated with your Apache account, please create one according to the guidelines.
Determine your Apache GPG Key and Key ID, as follows:
This will list your GPG keys. One of these should reflect your Apache account, for example:
Here, the key ID is the 8-digit hex string in the
publine:845E6689.Now, add your Apache GPG key to the Flink’s
KEYSfile in thereleaserepository 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.Configure
gitto use this key when signing code by giving it your key ID, as follows:You may drop the
--globaloption if you’d prefer to use this key for the current repository only.You may wish to start
gpg-agentto unlock your GPG key only once using your passphrase. Otherwise, you may need to enter this passphrase hundreds of times. The setup forgpg-agentvaries based on operating system, but may be something like this:Access to Apache Nexus repository
Configure access to the Apache Nexus repository, which enables final deployment of releases to the Maven Central Repository.
You log in with your Apache account.
Confirm you have appropriate access by finding
org.apache.flinkunderStaging Profiles.Navigate to your
Profile(top right dropdown menu of the page).Choose
User Tokenfrom the dropdown, then clickAccess User Token. Copy a snippet of the Maven XML configuration block.Insert this snippet twice into your global Maven
settings.xmlfile, typically${HOME}/.m2/settings.xml. The end result should look like this, whereTOKEN_NAMEandTOKEN_PASSWORDare your secret tokens:Website development setup
Get ready for updating the Flink website by following the website development instructions.
GNU Tar Setup for Mac
Skip this step if you are not using a Mac. The default tar application on Mac does not support GNU archive format and defaults to Pax. This bloats the archive with unnecessary metadata that can result in additional files when decompressing (see 1.15.2-RC2 vote thread). Install gnu-tar and create a symbolic link to use in preference of the default tar program.
The core of the release process is the build-vote-fix cycle. Each cycle produces one release candidate. The Release Manager repeats this cycle until the community approves one release candidate, which is then finalized.
Build and stage Java and Python artifacts
Set up a few environment variables to simplify Maven commands that follow. This identifies the release candidate being built. Start with
RC_NUMequal to1and increment it for each candidate.Now, create a release branch:
Tag the release commit:
You can use -c "user.signingkey=" as an additional git parameter if you have multiple signing keys in your keychain.
We now need to do several things:
Create the source release archive
Deploy jar artefacts to the Apache Nexus Repository, which is the staging area for deploying the jars to Maven Central
Build wheel packages
You might want to create a directory on your local machine for collecting the various source and binary releases before uploading them.
First, we build the source release:
Next, we stage the maven artifacts:
Review all staged artifacts in the staging repositories(https://repository.apache.org/#stagingRepositories). They should contain all relevant parts for each module, including
pom.xml, jar, test jar, source, test source, javadoc, etc. Carefully review any new artifacts.Close the staging repository on Apache Nexus. When prompted for a description, enter “Apache Flink Agents, version X, release candidate Y“.
Then, you need to build the flink-agents wheel packages.
Push the release candidate branch to your forked personal Flink repository, e.g.
Trigger the “Build Wheel“ GitHub workflow manually
Go to your GitHub fork website page
Under the “Actions“ tab, click “Build Wheel“
Select your recently pushed release candidate branch
You should now see that a new run is triggered
Download the wheel packages from the triggered “Build Wheel“ run artifacts after finished.
Download the wheel packages
Open the workflow run result page
Scroll down to the “Artifacts“ section
Click
wheel-1download the zip filesUnzip the zip file
Create directory
distunder the directory ofpythonMove the unzipped wheel packages to the directory of
python/distFinally, we create the binary convenience release files:
Stage source and binary releases on dist.apache.org
Copy the source release to the dev repository of dist.apache.org.
If you have not already, check out the Flink section of the
devrepository on via Subversion. In a fresh directory:Make a directory for the new release:
Copy Flink source/binary distributions, hashes, and GPG signature and the python subdirectory:
Add and commit all the files.
Verify that files are present
(Push the release tag)
If you haven't pushed the release tag yet, here's the command:
Propose a pull request for website updates
Add a blog post announcing the release, e.g., Release 0.1.0 blog post
Vote on the release candidate
As a sub-project from the Apache Flink community, once you have built and individually reviewed the release candidate, please share it for the Apache Flink community-wide review, e.g. VOTE.
Here is an email template, please adjust as you see fit.
The vote should be open for at least 72 hours, and accept majority approval, with at least 3 PMC affirmative votes.
See section Vote on the release candidate in Creating a Flink Release for more details.
Finalize the release
Once the release candidate has been reviewed and approved by the community, the release should be finalized. This involves the final deployment of the release candidate to the release repositories, merging of the website changes, etc.
Deploy Python artifacts to PyPI
Release manager should create a PyPI account and ask the PMC to add this account to pyflink collaborator list with Maintainer role to deploy the Python artifacts to PyPI. The artifacts could be uploaded using twine(https://pypi.org/project/twine/). To install twine, just run:
Note: Please ensure that the version of
urllib3is less than2.0in your python env, otherwise you may encounter some problem likeunexpected keyword argument method_whitelist.Download the python artifacts from dist.apache.org and upload it to pypi.org:
PyPI has removed GPG signatures support, so it is recommended to no longer upload signatures to PyPI.
If upload failed or incorrect for some reason(e.g. network transmission problem), you need to delete the uploaded release package of the same version(if exists) and rename the artifact to flink-agents-${RELEASE_VERSION}.post0.tar.gz, then re-upload.
Note: re-uploading to pypi.org must be avoided as much as possible because it will cause some irreparable problems. If that happens, users cannot install the flink-agents package by explicitly specifying the package version, i.e. the following command "pip install flink-agents==${RELEASE_VERSION}.post0" to install the package.
Deploy artifacts to Maven Central Repository
Deploy artifacts to Maven Central Repository
Use the Apache Nexus repository to release the staged binary artifacts to the Maven Central repository. In the
Staging Repositoriessection, find the relevant release candidateorgapacheflink-XXXentry and clickRelease. Drop all other release candidates that are not being released.Deploy source and binary releases to dist.apache.org
Copy the source and binary releases from the
devrepository to thereleaserepository at using Subversion.(Note: Only PMC members have access to the release repository. If you do not have access, ask on the mailing list for assistance.)
Remove old release candidates from dist.apache.org
Remove the old release candidates from https://dist.apache.org/repos/dist/dev/flink using Subversion.
Git tag
Create and push a new Git tag for the released version by copying the tag for the final release candidate, as follows:
Git labels
Create the following Git label for version control
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.
Merge website pull request
Merge the website pull request to list the release. Make sure to regenerate the website as well, as it isn't build automatically.
Apache mailing lists
Announce on the dev@ mailing list that the release has been finished.
Announce on the release on the user@ mailing list, listing major improvements and contributions.
Announce the release on the [email protected] mailing list.
Recordkeeping
Use reporter.apache.org to seed the information about the release into future project reports.
(Note: Only PMC members have access report releases. If you do not have access, ask on the mailing list for assistance.)
Improve the process
It is important that we improve the release processes over time. Once you’ve finished the release, please take a step back and look what areas of this process and be improved. Perhaps some part of the process can be simplified. Perhaps parts of this guide can be clarified.
Beta Was this translation helpful? Give feedback.
All reactions