pmd:
- version: 6.22.0
- previous_version: 6.21.0
- date: 12-March-2020
- release_type: minor
+pmd:
+ version: 6.34.0
+ previous_version: 6.33.0
+ date: 24-April-2021
+ release_type: minor
-The release type could be one of “bugfix”, “minor”, or “major”.
+The release type could be one of “bugfix” (e.g. 6.34.x), “minor” (6.x.0), or “major” (x.0.0).
The release notes usual mention any new rules that have been added since the last release.
Please double check the file pmd-core/src/main/resources/rulesets/releases/<version>.xml
, so
@@ -1470,8 +1514,8 @@ on github with the title of the new release is searched. Make sure, there is a m
on https://github.com/pmd/pmd/milestones. The following snippet will
create the numbers, that can be attached to the release notes as a last section:
-LAST_VERSION=6.22.0
-NEW_VERSION=6.23.0
+LAST_VERSION=6.33.0
+NEW_VERSION=6.34.0
NEW_VERSION_COMMITISH=HEAD
echo "### Stats"
@@ -1490,18 +1534,20 @@ $ git push
The Homepage
-The github repo pmd.github.io
hosts the homepage for https://pmd.github.io.
+The github repo pmd.github.io
hosts the homepage for https://pmd.github.io.
+All the following tasks are to be done in this repo.
The new version needs to be entered into _config.yml
, e.g.:
-pmd:
- latestVersion: 6.22.0
- latestVersionDate: 12-March-2020
+pmd:
+ latestVersion: 6.34.0
+ latestVersionDate: 24-April-2021
-Also move the previous version down into the “downloads” section.
+Also move the previous version down into the “downloads” section. We usually keep only the last 3 versions
+in this list, so remove the oldest version.
-Then create a new page for the new release, e.g. _posts/2020-03-12-PMD-6.22.0.md
and copy
+
Then create a new page for the new release, e.g. _posts/2021-04-24-PMD-6.34.0.md
and copy
the release notes into this page. This will appear under the news section.
Check in all (version) changes to branch master:
@@ -1510,85 +1556,209 @@ the release notes into this page. This will appear under the news section.
$ git push
-Creating the release
+The actual release
-The release is created using the maven-release-plugin. This plugin changes the version by basically
-removing the “-SNAPSHOT” suffix, builds the changed project locally, commits the version change, creates
+
The actual release starts with one last local command: calling maven-release-plugin.
+
+This plugin changes the version by basically removing the “-SNAPSHOT” suffix, builds the changed project
+locally, commits the version change, creates
a new tag from this commit, changes the version of the project to the next snapshot, commits this change
and pushes everything.
RELEASE_VERSION
is the version of the release. It is reused for the tag. DEVELOPMENT_VERSION
is the
next snapshot version after the release.
-mvn -B release:clean release:prepare \
- -Dtag=pmd_releases/${RELEASE_VERSION} \
- -DreleaseVersion=${RELEASE_VERSION} \
- -DdevelopmentVersion=${DEVELOPMENT_VERSION}
+RELEASE_VERSION=6.34.0
+DEVELOPMENT_VERSION=6.35.0-SNAPSHOT
+./mvnw -B release:clean release:prepare \
+ -Dtag=pmd_releases/${RELEASE_VERSION} \
+ -DreleaseVersion=${RELEASE_VERSION} \
+ -DdevelopmentVersion=${DEVELOPMENT_VERSION}
-Once the maven plugin has pushed the tag, travis-ci will start and build a new version from this tag. Since
-it is a tag build and a released version build, travis-ci will do a couple of additional stuff:
+Once the maven plugin has pushed the tag, github actions will start and build a new version from this tag. Since
+it is a tag build and a released version build, the build script will do a couple of additional stuff.
+This is all automated in .ci/build.sh
.
+
+Here is, what happens:
- Deploy and release the build to maven central, so that it can be downloaded from
https://repo.maven.apache.org/maven2/net/sourceforge/pmd/pmd/. This is done automatically, if
-all unit tests pass on travis-ci. The plugin nexus-staging-maven-plugin is used for that.
+all unit tests pass and the build doesn’t fail for any other reason.
+The plugin nexus-staging-maven-plugin is used for that.
- Upload the new binaries to github releases under https://github.com/pmd/pmd/releases. It also uploads
-the release notes.
+the release notes from docs/pages/release_notes.md
.
+Note: The during the process, the release is a draft mode and not visible yet.
+At the end of the process, the release will be published.
- Upload the new binaries additionally to sourceforge, so that they can be downloaded from
-https://sourceforge.net/projects/pmd/files/pmd/, including the release notes. The new binaries are
-selected as the new default downloads for PMD.
+https://sourceforge.net/projects/pmd/files/pmd/, including the release notes.
+ - Render the documentation in
docs/
with bundle exec jekyll build
and create a zip file from it.
+ - Upload the doc zip file to the current github release under https://github.com/pmd/pmd/releases and
+to https://sourceforge.net/projects/pmd/files/pmd/.
+ - Upload the documentation to https://docs.pmd-code.org, e.g. https://docs.pmd-code.org/pmd-doc-6.34.0/ and
+create a symlink, so that https://docs.pmd-code.org/latest/ points to the new version.
+ - Remove the old snapshot documention, e.g. so that https://docs.pmd-code.org/pmd-doc-6.34.0-SNAPSHOT/ is gone.
+Also create a symlink from pmd-doc-6.34.0-SNAPSHOT to pmd-doc-6.34.0, so that old references still work, e.g.
+https://docs.pmd-code.org/pmd-doc-6.34.0-SNAPSHOT/ points to the released version.
+ - Deploy javadoc to “https://docs.pmd-code.org/apidocs/*/RELEASE_VERSION/”, e.g.
+https://docs.pmd-code.org/apidocs/pmd-core/6.34.0/. This is done for all modules.
+ - Remove old javadoc for the SNAPSHOT version, e.g. delete https://docs.pmd-code.org/apidocs/pmd-core/6.34.0-SNAPSHOT/.
+ - Create a draft news post on https://sourceforge.net/p/pmd/news/ for the new release. This contains the
+rendered release notes.
- Add the documentation of the new release to a subfolder on https://pmd.github.io, also make
-this folder available as
latest
.
- - Upload the documentation to https://docs.pmd-code.org.
+this folder available as latest
, so that https://pmd.github.io/latest/ shows the new
+version and https://pmd.github.io/pmd-6.34.0/ is the URL for the specific release.
+ - Also copy the documentation to sourceforge’s web space, so that it is available as
+https://pmd.sourceforge.io/pmd-6.34.0/. All previously copied version are listed
+under https://pmd.sourceforge.io/archive.phtml.
+ - After all this is done, the release on github (https://github.com/pmd/pmd/releases) is published
+and the news post on sourceforge (https://sourceforge.net/p/pmd/news/> is publishes as well.
+ - The new binary at https://sourceforge.net/projects/pmd/files/pmd/ is
+selected as the new default for PMD.
+ - As a last step, a new baseline for the regression tester
+is created and uploaded to https://pmd-code.org/pmd-regression-tester.
-After the release
-
-The release on travis currently takes about 30 minutes. Once this is done, you can spread the news:
-
-Submit a news on SF
-
-Submit news to SF on the PMD Project News page. You can use
-the following template:
-
-PMD <version> released
-
-* Downloads: https://github.com/pmd/pmd/releases/tag/pmd_releases%2F<version>
-* Documentation: https://pmd.github.io/pmd-<version>/
-
-And Copy-Paste the release notes
-
-
-Write an email to the mailing list
-
-To: PMD Developers List <pmd-devel@lists.sourceforge.net>
-Subject: [ANNOUNCE] PMD <version> released
-
-
-* Downloads: https://github.com/pmd/pmd/releases/tag/pmd_releases%2F<version>
-* Documentation: https://pmd.github.io/pmd-<version>/
-
-And Copy-Paste the release notes
-
-
-Prepare the next release
-
-Prepare the new release notes
+The release on github actions currently takes about 30-45 minutes. Once this is done, you can spread additional
+news: