This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch releases/tools/1.0
in repository https://gitbox.apache.org/repos/asf/incubator-training.git
The following commit(s) were added to refs/heads/releases/tools/1.0 by this
push:
new ab29785 - Finished the first part of the release documentation fot
the build tools.
ab29785 is described below
commit ab2978579a356d7604284298731a277b0abaecc8
Author: Christofer Dutz <[email protected]>
AuthorDate: Wed Sep 9 13:02:05 2020 +0200
- Finished the first part of the release documentation fot the build tools.
---
.../site/asciidoc/developers/releasing-tools.adoc | 135 +++++++++++++++++++--
1 file changed, 124 insertions(+), 11 deletions(-)
diff --git a/site/src/site/asciidoc/developers/releasing-tools.adoc
b/site/src/site/asciidoc/developers/releasing-tools.adoc
index 7793c29..c057618 100644
--- a/site/src/site/asciidoc/developers/releasing-tools.adoc
+++ b/site/src/site/asciidoc/developers/releasing-tools.adoc
@@ -31,22 +31,135 @@ This makes releasing this a little trickier, but in the
end it's a lot simpler f
=== Creating a release branch
-Normally we would use the maven release plugin to create these, however this
would create 3 independent release branchees, which is sort of silly.
-So we'll create it manually.
+First we need to create a release branch.
- git checkout -b releases/tools/1.0.0
+Do this the following way:
-So as soon as that's done, we should go back to the `develop` branch and
update the poms to new versions.
+ mvn release:branch -DbranchName=releases/tools/1.0
-As in this example we're releasing version `1.0.0`, we will edit them to
`1.1.0-SNAPSHOT`.
+NOTE: We're not using the full version here, as this branch should also
contain the bugfix releases and the tags will have the name using the full
version. If we used that for the branch itself we would get name collisions
during the release.
-Currently, the following files need updating:
+After this command is done, we will still be on the `develop` branch.
+In order to actually start the release, we need to switch to the release
branch which was previously created.
-- tools/content-parent-resources/pom.xml (Line 35)
-- tools/content-parent-pom/pom.xml (Line 35, Line 70)
-- tools/content-archetype/pom.xml (Line 35)
-- tools/content-archetype/src/main/resources/archetype-resources/pom.xml (Line
25)
+ git checkout releases/tools/1.0
-=== Releasing `content-parent-resources`
+=== Doing the release
+The release itself is done via the `maven-release-plugin`.
+ mvn release:prepare
+
+The plugin will ask some questions.
+
+- For the new-release version, just hit `[Enter]` and use the default.
+- For the release tag use: releases/tools/1.0.0 (Or the version used in the
question before)
+- For the next development version, again just hit `[Enter]` and use the
default.
+
+The plugin will now:
+
+- Check if there are any uncommitted files in the release and abort if it
finds any.
+- Then it will update the versions of all artifacts in the reactor to the
release version.
+- Then check if now any SNAPSHOT version is used and ask to resolve them to
release versions if it finds any (If it finds any, this should be addressed as
it should not happen)
+- Then it does a build including tests in order to see if it builds with the
new version.
+- If this build is ok, it commits the changed poms with the new versions.
+- Then it tags this version
+- Then it changes the versions to the next version
+- Then it commits these changes too
+- Then it pushes the changes
+
+The next step now uses the release tag created in the previous step and builds
the release artifacts.
+
+ mvn release:perform
+
+This now will:
+
+- Checkout the tag into the "target/checkout" directory
+- Run a `mvn deploy` build in this clean checkout with enabled
`apache-release` profile
+- In this build - due to the `apache-release` profile - will also build
`source` jars, `javadoc` jars, create a source distribution
+- Create md5 hashes for all artifacts
+- Sign all artifacts with your GPG Keys
+- Deploy everything to the `Apache Nexus` Staging repository
+
+Last thing you need to do after a successful execution of the release:perform
step, is:
+
+- To log in to Apache's Nexus at: https://repository.apache.org/#welcome
(using your apache credentials)
+- Select `Staging Repositories` in the `Build Promotion` menu on the left-hand
side (If you can't see it, you've probably not logged in)
+- Use the search box of the `Staging Repositories` tab and search for
"training" (It will probably have only one)
+- Select the entry.
+- Click on the `Close` button.
+- Enter a meaningful message and click `Confirm`
+- Hit the `Refresh` button in the tab untill the column `Status` changes from
`open` to `closed`
+- Copy the `URL` displayed in the details tab for the selected staging repo
(In my case:
https://repository.apache.org/content/repositories/orgapachetraining-1000)
+
+We're now done with the preparation of the RC from a Maven perspective.
+
+Next we need to stage the source bundle we will be voting on.
+
+=== Staging the Release Candidate
+
+What we've staged in Nexus is the `convenience binaries` part of the release,
the official release will be the source bundle located in SVN.
+
+These will be located under:
+https://dist.apache.org/repos/dist/dev/incubator/training/
+
+In our case the tools will be located in a sub-directory `tools`, so the final
path to the `RC1` of version `1.0.0` will be:
https://dist.apache.org/repos/dist/dev/incubator/training/tools/1.0.0/rc1
+
+I usually prepare a local directory containing all parts and then just import
them into SVN in one go.
+
+The local structure for this is then:
+
+ /tools/1.0.0/rc1/training-tools-1.0.0-source-release.zip
+ /tools/1.0.0/rc1/training-tools-1.0.0-source-release.zip.asc
+ /tools/1.0.0/rc1/training-tools-1.0.0-source-release.zip.sha512
+
+NOTE: Be sure to not take the files form the `target` directory directly, but
that you use the `target/checkout/tools/target` versions instead!
+
+Then I just import the 1.0.0 directory using the following command
+
+ svn import tools/1.0.0
https://dist.apache.org/repos/dist/dev/incubator/training/tools/1.0.0 -m"Staged
RC1 of version 1.0.0 Apache Training tools"
+
+If this is the first time you are releasing something for the Apache Training
(incubating) project, be sure to add your PGP key to the `KEYS` file at:
https://dist.apache.org/repos/dist/dev/incubator/training/KEYS
+
+=== Sending out the VOTE email
+
+Next step is to actually start the vote by sending out the VOTE email.
+
+Here a template for that:
+
+---
+E-Mail Topic:
+[VOTE] Apache Training (Incubating) Tools {release-version} RC{rc-number}
+
+Message:
+Apache Training (Incubating) Tools {release-version} RC{rc-number} has been
staged under [2]
+and it’s time to vote on accepting it for release.
+
+All Maven artifacts are available under [1]. Voting will be open for 72hr.
+
+A minimum of 3 binding +1 votes and more binding +1 than binding -1
+are required to pass.
+
+Repository: https://gitbox.apache.org/repos/asf/incubator-training.git
+Release tag: releases/tools/{release-version}
+Hash for the release tag: {replacethiswiththerealgitcommittag}
+
+Per [3] "Before voting +1 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."
+
+You can achieve the above by following [4].
+
+[ ] +1 accept (indicate what you validated - e.g. performed the non-RM items
in [4])
+[ ] -1 reject (explanation required)
+
+
+[1]
https://repository.apache.org/content/repositories/orgapachetraining-{somefourdigitnumber}
+[2]
https://dist.apache.org/repos/dist/dev/incubator/training/tools/{release-version}/rc{rc-number}/
+[3] https://www.apache.org/dev/release/validation.html#approving-a-release
+[4] https://plc4x.apache.org/developers/release/validation.html
+---
+
+=== TO BE CONTINUED ...
\ No newline at end of file