...
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 |
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!
Use the update version script to change version of the installer (directory: installer)
Code Block | ||||
---|---|---|---|---|
| ||||
mvn release:prepare -DautoVersionSubmodules=true -Papache-release |
The release plugin will ask you a few things:
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.66.0
)The next development version (The version present in the pom after the release) (e.g.,
0.66.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.66.0) which doesn't have any SNAPSHOT dependencies. In addition, your rel/VERSION branch should be increased to the next patch version.
# 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!Great! So the next step is to actually perform the release and stage the artifacts to the ASF Nexus. The command you need to run is:
Code Block | ||||
---|---|---|---|---|
| ||||
mvn release:performprepare -DreleaseProfiles=apache-release |
Uploading the artifacts to the ASF Nexus might take some time. Once it is finished, go to https://repository.apache.org, log in with your Apache credentials, go to "Staging Repositories" and search for "streampipes".
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!
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.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
- 0.66.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
- The sha512 file
# Commit these changes to SVN. |
Great! The core module 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
Use the update version script to change version to release version:
Code Block | ||||
---|---|---|---|---|
| ||||
# go to release brnacht (e.g. rel/0.66.0)
# change version to next release version
./upgrade_versions.sh NEW_RELEASE_VERSION
git push origin |
Create release candidate tag
Code Block | ||||
---|---|---|---|---|
| ||||
git tag release/VERSION
#e.g., git tag release/0.66.0
# push tags
git push origin --tags |
Remove git related files
Ensure to remove all files and folders that start with ".git" before creating the zip file.
Create Zip file
The next step is to create a zip file for the source release:
Code Block | ||||
---|---|---|---|---|
| ||||
zip -r apache-streampipes-installer-VERSION-incubating-source-release.zip incubator-streampipes-installer
# e.g.:
zip -r apache-streampipes-installer-0.66.0-incubating-source-release.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-incubating-source-release.zip
# e.g.:
gpg --detach-sign -a -u CA110DC0 apache-streampipes-installer-0.66.0-incubating-source-release.zip
# enter your passphrase when asked |
The next step is to create a checksum:
Code Block | ||||
---|---|---|---|---|
| ||||
sha512sum apache-streampipes-installer-VERSION-incubating-source-release.zip > apache-streampipes-installer-VERSION-incubating-source-release.zip.sha512
# e.g.:
sha512sum apache-streampipes-installer-0.66.0-incubating-source-release.zip > apache-streampipes-installer-0.66.0-incubating-source-release.zip.sha512 |
DautoVersionSubmodules=true -Papache-release |
The release plugin will ask you a few things:
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.69.0
)The next development version (The version present in the pom after the release) (e.g.,
0.69.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.69.0) which doesn't have any SNAPSHOT dependencies. In addition, your rel/VERSION branch should be increased to the next patch version.
Great! So the next step is to actually perform the release and stage the artifacts to the ASF Nexus. The command you need to run is:
Code Block | ||||
---|---|---|---|---|
| ||||
mvn release:perform -DreleaseProfiles=apache-release |
Uploading the artifacts to the ASF Nexus might take some time. Once it is finished, go to https://repository.apache.org, log in with your Apache credentials, go to "Staging Repositories" and search for "streampipes".
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!
The final step is to upload the source release artifacts to 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/installercore/) # 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 -extensions -installer -0.6669.0 - rc1 -rc1 # 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.md - The zip file (apache-streampipes-VERSION-incubating-source-release.zip) - The asc file - The sha512 file # Commit these changes to SVN. |
Great! StreamPipes is ready for release voting.
Initiate vote
Now comes the best part: You're ready to send the VOTE mail to the developer list!
...
Panel | ||
---|---|---|
| ||
TO: |
...
Panel | ||
---|---|---|
| ||
TO: |
...
Panel | ||
---|---|---|
| ||
TO: The vote PASSES with X votes +1 (X binding/Y non-binding) and no -1.
|
...
Code Block | ||
---|---|---|
| ||
TO: general@incubator.apache.org SUBJECT: [VOTE] Apache StreamPipes 0.6669.0 (incubating) RC1 release TEXT: Hi all, this is a call for a vote to release Apache StreamPipes (incubating) 0.6669.0. Apache StreamPipes (incubating) is self-service Industrial IoT toolbox to enable non-technical users to connect, analyze and explore IIoT data streams. The Apache StreamPipes community has voted on and approved a proposal to release Apache StreamPipes (incubating) 0.6669.0 We now kindly request the Incubator PMC members to review and vote on this release. Vote and result threads from the StreamPipes community: Result: https://lists.apache.org/thread.html/rff5cbadf51c91b27f38fd5fb55b8b1d495c6e9f101c7552321e454e9%40%3Cdev.streampipes.apache.org%3E Vote: https://lists.apache.org/thread.html/rbac494d62247beec29a6ced23a0deff528c46efe905828f1d8ec1a9a%40%3Cdev.streampipes.apache.org%3E From the PPMC vote, we carry over 3 binding IPMC votes: Christofer Dutz Justin Mclean Julian Feinauer The vote will be open for at least 72 hours. Please vote accordingly: [] +1 approve (indicate what you validated - e.g., performed the checklist at [6]) [] +0 no opinion [] -1 reject (explanation required) Three artifacts are relevant for this vote: incubator-streampipes, staged at [1], available in Nexus at [2], release tag: release/0.6669.0, hash for the release tag: b8c23e6785eaad79da6dd03072f2c1dcbfa467b4 incubator-streampipes-extensions, staged at [3], release tag: release/0.6669.0, hash for the release tag: 44b7dd13c75058811a001f1aa6b3f6805285eb2d incubator-streampipes-installer, staged at [4], release tag: release/0.6669.0, hash for the release tag: 1a8054239d8f42d66ee95e7b1282708f5f1266b0 Per [5] "Before voting +1, [P]PMC members are required to download the signed source code package, compile it as provided, and test the resulting executable on their own platform, along with also verifying that the package meets the requirements of the ASF policy on releases." A release validation guide is available at [6]. The KEYS file is available at [7] Thanks for taking your time for validating this release! [1] https://dist.apache.org/repos/dist/dev/incubator/streampipes/core/0.6669.0/rc1 [2] https://repository.apache.org/content/repositories/orgapachestreampipes-1006 [3] https://dist.apache.org/repos/dist/dev/incubator/streampipes/extensions/0.6669.0/rc1 [4] https://dist.apache.org/repos/dist/dev/incubator/streampipes/installer/0.6669.0/rc1 [5] https://www.apache.org/dev/release.html#approving-a-release [6] https://cwiki.apache.org/confluence/display/STREAMPIPES/Validating+a+release [7] https://dist.apache.org/repos/dist/dev/incubator/streampipes/KEYS |
...
Code Block | ||
---|---|---|
| ||
TO: general@incubator.apache.org SUBJECT: [RESULT][VOTE] Release Apache StreamPipes 0.6669.0 (incubating) TEXT: Hi all, The vote to release Apache StreamPipes (incubating) 0.6669.0 has passed with three +1 binding votes. Binding votes: Christofer Dutz Julian Feinauer Justin Mclean Vote thread: https://lists.apache.org/thread.html/r451a554230a558e3035c4d1c870591d50c2cadf00c36b0f9ba4a4616%40%3Cgeneral.incubator.apache.org%3E Thanks a lot to everyone for taking your time to review our release candidate! We will proceed with publishing the approved artifacts and sending out the announcements in the coming days. On behalf of the Apache StreamPipes Community, NAME |
...