...
Info | ||
---|---|---|
| ||
Read the Onboarding Guide for Release Managers! |
Table of Contents |
---|
Update release notes
IMPORTANT: This process did not work for the last release (0.92.0). I created an issue to fix it, see #1667).
To provide a proper overview of what has changed within the current release, we need to update file RELEASE_NOTES.md in our release branch (rel/VERSION
).
Therefore it is required to perform the following steps.
- Go to the following repository and follow the instructions (https://github.com/dominikriemer/jira-to-issues)
- Copy the release notes printed to the console and insert it into the release notes
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
# [x.yy.z]
<GENERATED RELEASE NOTES> |
Update issue template
Update the current version in the issue template for bug reports here.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
- type: dropdown
attributes:
label: Apache StreamPipes version
description: What Apache StreamPipes version are you using?
multiple: false
options:
- "0.70.0" # change to new release version
- "dev (current development state)"
- "Other StreamPipes version (please specify below)"
|
Prepare release candidates
...
Info | ||
---|---|---|
| ||
It is recommended to use a clean repository for release preparation to ensure there are no unexpected local files in the source release. |
...
Make sure that you are in the branch rel/VERSION that you created earlier
First, set sp.version in the Maven archetypes to the upcoming release version of StreamPipes:
Code Block | ||||
---|---|---|---|---|
| ||||
# In all subdirectories of archetypes, open the pom.xml file in src/main/resources/archetype-resources and set the sp.version property to the upcoming version (e.g., 0.6669.0) # Commit and push these changes to rel/VERSION |
Update the UI version manually to the upcoming version:
Code Block | ||||
---|---|---|---|---|
| ||||
# Update the version in ui/package.json # Update the version in ui/package-lock.json (Be careful, this file contains two places with SNAPSHOT). |
Use the update version script to change version of the installer (directory: installer)
Code Block | ||||
---|---|---|---|---|
| ||||
# change version to next release version
./upgrade_versions.sh NEW_RELEASE_VERSION
# ./upgrade_versions.sh 0.69.0
# Commit and push these changes to rel/VERSION |
Now it's time to perform the Maven release!
Make sure to checkout a clean copy of incubator-streampipes and perform the following:. Make sure you do this from the rel/VERSION branch!
Code Block | ||||
---|---|---|---|---|
| ||||
mvn release:prepare -DautoVersionSubmodules=true -Papache-release |
...
The version we want to release as (It will suggest the version you get by omitting the
-SNAPSHOT
suffix)The name of the tag the release commit will be tagged with in the SCM (Name it
release/{release-version}
(e.g.,release/0.6669.0
)The next development version (The version present in the pom after the release) (e.g.,
0.6669.1-SNAPSHOT, use the next patch version and not the new minor version in dev
)
Once this is finished, check that everything is correct: There should be a new tag release/version (e.g., release/0.6669.0) which doesn't have any SNAPSHOT dependencies. In addition, your rel/VERSION branch should be increased to the next patch version.
...
There should be one item in the list containing the just uploaded files. Click on "Close" and enter a message (e.g., Close StreamPipes release VERSION) and then you are done on the Maven side!
Revert Release
Important! Only when there was an error in the release. If this is the case, the maven release can be reverted with the following commands:
Code Block | ||||
---|---|---|---|---|
| ||||
# Drop artifacts in Nexus repository
- Go to https://repository.apache.org and login
- Go to "Staging Repositories" and search for "streampipes"
- There should be one item in the list containing the just uploaded files
- Click on "Drop" and enter a message
# Delete git tags, both locally and remote
- git tag -d release/#RELEASE_VERSION (e.g. git tag -d release/0.69.0)
- git push --delete origin release/#RELEASE_VERSION (e.g. git push --delete origin release/0.69.0)
# Rollback maven version
- mvn versions:set -DnewVersion=#OLD_DEVELOPMENT_VERSION (e.g. mvn versions:set -DnewVersion=0.60.0-SNAPSHOT
- Check that the version was changed correctly in all pom.xml files
- mvn versions:commit
# Commit changes in git
# Now the release process can be started again |
The final step is to upload the source release artifacts to the Apache SVN:
...
Code Block | ||||
---|---|---|---|---|
| ||||
# Create a new rc folder in the SVN (https://dist.apache.org/repos/dist/dev/incubator/streampipes/core/) # Create a new directory for the version (e.g., 0.6669.0) and a new subdirectory for theadd release candidate (which is increased for every failed release), e.g., rc1. # The folder structure should look like this: -core - 0.6669.0 - rc1 -extensions -installer # Copy the following files into this folder (they can be found in incubator-streampipes/target/checkout/target: - RELEASE_NOTES.md - RELEASE_VALIDATION.md - README.md - The zip file (apache-streampipes-VERSION-incubating-source-release.zip) - The asc file (apache-streampipes-VERSION-source-release.zip.asc) - The sha512 file (apache-streampipes-VERSION-source-release.zip.sha512) # # Commit these changes to SVN. |
Great! The core module StreamPipes is ready for release voting.
incubator-streampipes-extensions
As the dependencies required by the extensions from incubator-streampipes are not yet available in Maven Central, we first need to manually install these dependencies locally:
Code Block | ||||
---|---|---|---|---|
| ||||
# in incubator-streampipes/target/checkout (make sure the version is the release version (e.g., 0.66.0)
mvn clean install |
Now switch to the incubator-streampipes-extensions project, make sure you are in the release branch (e.g., rel/0.66.0) and edit your pom.xml to make sure it uses the release version of all core modules:
Code Block | ||||
---|---|---|---|---|
| ||||
# in incubator-streampipes-extensions/pom.xml
# Change the parent to the StreamPipes core release version:
<parent>
<groupId>org.apache.streampipes</groupId>
<artifactId>streampipes-parent</artifactId>
<version>0.66.0</version>
</parent>
# Change the streampipes.version property to the core release version:
<streampipes.version>0.66.0</streampipes.version> |
The next step is to prepare the release with the following command (make sure to do this in a fresh local copy)
Code Block | ||||
---|---|---|---|---|
| ||||
mvn release:prepare -DautoVersionSubmodules=true -Papache-release |
Afterwards, finish the release. The deployment to a Maven repository is skipped, as the binary artifacts are all fat jars that are not intended for distribution via Maven.
Code Block | ||||
---|---|---|---|---|
| ||||
mvn release:perform -DreleaseProfiles=apache-release |
Great!
Now you can go to target/checkout/target and copy the dependencies to the Apache SVN. The Apache SVN directory is "extensions", the steps are equal to the steps described for the core module.
incubator-streampipes-installer
The preparation of a release candidate for incubator-streampipes-installer is a manual process:
Modify versions
Code Block | ||||
---|---|---|---|---|
| ||||
# in branch rel/VERSION
# open cli/tmpl_env and increase the SP_BACKEND_VERSION and SP_PE_VERSION to the release version, so that it looks like this:
SP_DOCKER_REGISTRY=apachestreampipes/
SP_BACKEND_VERSION=0.66.0
SP_PE_VERSION=0.66.0
HOST_DOCKER_INTERNAL=##HOST_DOCKER_INTERNAL##
# open helm-chart/values.yaml and increase the streampipes version in the streampipes block like this:
streampipes:
version: "0.66.0"
registry: "apachestreampipes"
# open installer/templates/.env and set SP_VERSION to the release version:
SP_VERSION=0.66.0
SP_DOCKER_REGISTRY=apachestreampipes
COMPOSE_PROJECT_NAME=streampipes
# commit and push the changes to the release branch |
Create release candidate tag
Code Block | ||||
---|---|---|---|---|
| ||||
git tag release/VERSION
#e.g., git tag release/0.66.0
# push tags
git push origin --tags |
The next step is to create a zip file for the source release:
Code Block | ||||
---|---|---|---|---|
| ||||
zip -r apache-streampipes-installer-VERSION-incubating.zip incubator-streampipes-installer
# e.g.:
zip -r apache-streampipes-installer-0.66.0-incubating.zip incubator-streampipes-installer/ |
Do a quick check if the source release contains any binary files, SNAPSHOT dependencies or other things that should not be part of the release. (e.g., grep -rnw './' -e 'SNAPSHOT')
Now we'll create a GPG signature:
Code Block | ||||
---|---|---|---|---|
| ||||
gpg --detach-sign -a -u GPG_KEY apache-streampipes-installer-VERSION.zip
# e.g.:
gpg --detach-sign -a -u CA110DC0 apache-streampipes-installer-0.66.0-incubating.zip
# enter your passphrase when asked |
The next step is to create a checksum:
Code Block | ||||
---|---|---|---|---|
| ||||
sha512sum apache-streampipes-installer-VERSION-incubating.zip > apache-streampipes-installer-VERSION-incubating.zip.sha512
# e.g.:
sha512sum apache-streampipes-installer-0.66.0-incubating.zip > apache-streampipes-installer-0.66.0-incubating.zip.sha512 |
Now we are ready to prepare the release candidate in the Apache SVN:
Code Block | ||||
---|---|---|---|---|
| ||||
# Create a new rc folder in the SVN (https://dist.apache.org/repos/dist/dev/incubator/streampipes/installer/)
# Create a new directory for the version (e.g., 0.66.0) and a new subdirectory for the release candidate (which is increased for every failed release), e.g., rc1.
# The folder structure should look like this:
-core
-extensions
-installer
-0.66.0
-rc1
Copy the following files into this folder:
- RELEASE_NOTES.md
- RELEASE_VALIDATION.md
- README.md
- The zip file
- The asc file
- The sha512 file
# Commit these changes to SVN. |
Initiate vote
Now comes the best part: You're ready to send the VOTE mail to the developer list!
Remember: As an incubating project, two votes are required: First, the Apache StreamPipes community triggers a vote - once this vote is successful, a second vote will happen on the incubator list. But one step after the other - now let's write the mail targeted at our developer list at dev@streampipes.org:
Deploy Maven artifacts to maven central
Move sources to release mirror in SVN
Cleanup older release sources
Add version to DOAP file
Initiate vote
Now comes the best part: You're ready to send the VOTE mail to the developer list!
Panel | ||
---|---|---|
| ||
TO: |
Cancel a vote
- If problems occur during the VOTE cancel the VOTE and prepare a new release candidate
Panel | ||
---|---|---|
| ||
TO: |
Announce vote result
After 72 hours, the vote can be closed. Sometimes it might be worth to wait a little longer to allow all PMC members to vote accordingly. If votes are missing, you can also directly approach people from the PMC and ask for their vote.
Send the following mail to the dev list to announce the results:
...
Panel | ||
---|---|---|
| ||
TO: The vote PASSES with X votes +1 (X binding/Y non-binding) and no -1.
|