activemq-artemis/RELEASING.md

423 lines
17 KiB
Markdown
Raw Normal View History

2017-11-01 15:24:48 -04:00
# A check list of things to be done before a release.
Things to do before issuing a new release:
2018-04-27 16:08:55 -04:00
* Update docs/user-manual/en/versions.md to include appropriate release notes and upgrade instructions. See previous
entries for guidance.
* Build the release locally: mvn clean install -Prelease
1. Check the manuals have been created properly
2. Check the javadocs are created correctly (including the diagrams)
* Test the standalone release (this should be done on windows as well as linux):
1. Unpack the distribution zip or tar.gz
2017-11-01 15:24:48 -04:00
2. Start and stop the server
* Run the examples, from the [development branch](https://github.com/apache/activemq-artemis-examples/tree/development).
2017-11-06 15:27:17 -05:00
If everything is successful follow these next steps to build and publish artifacts to Nexus and send out a release vote.
2017-11-01 15:24:48 -04:00
## Key to Sign the Release
2016-08-16 16:18:58 -04:00
If you don't have a key to sign the release artifacts, follow the instruction at [apache release signing](https://infra.apache.org/release-signing.html).
2017-11-01 15:24:48 -04:00
Ensure that your key is listed at https://dist.apache.org/repos/dist/release/activemq/KEYS.
If not, generate the key information, e.g.:
```
gpg --list-sigs username@apache.org > /tmp/key; gpg --armor --export username@apache.org >> /tmp/key
```
Then send the key information in `/tmp/key` to `private@activemq.apache.org` so it can be added.
2020-09-01 08:10:13 -04:00
Ensure that your key is listed at https://home.apache.org/keys/committer/.
If not add your key id (available via `gpg --fingerprint <key>`) to the `OpenPGP Public Key Primary Fingerprint` field at
2017-11-01 15:24:48 -04:00
https://id.apache.org/. Note: this is just the key id, not the whole fingerprint.
## Checking out a new empty git repository
Before starting make sure you clone a brand new git as follows as the release plugin will use the upstream for pushing the tags:
```sh
git clone https://github.com/apache/activemq-artemis.git
cd activemq-artemis
2019-01-31 10:41:49 -05:00
git remote add upstream https://gitbox.apache.org/repos/asf/activemq-artemis.git
```
2017-11-01 15:24:48 -04:00
If your git `user.email` and/or `user.name` are not set globally then you'll need to set these on the newly clone
repository as they will be used during the release process to make commits to the upstream repository, e.g.:
```
git config user.email "username@apache.org"
git config user.name "FirstName LastName"
```
This should be the same `user.email` and `user.name` you use on your main repository.
2016-08-16 16:18:58 -04:00
## Running the release
You will have to use this following maven command to perform the release:
```sh
mvn clean release:prepare -Prelease
2016-08-16 16:18:58 -04:00
```
2017-11-01 15:24:48 -04:00
You could optionally set `pushChanges=false` so the version commit and tag won't be pushed upstream (you would have to do it yourself):
```sh
mvn clean release:prepare -DpushChanges=false -Prelease
```
When prompted make sure the new development version matches with the next expected release, rather than the offered patch release. Example:
2016-08-16 16:18:58 -04:00
```
[INFO] Checking dependencies and plugins for snapshots ...
What is the release version for "ActiveMQ Artemis Parent"? (artemis-pom) 2.31.0: :
What is the SCM release tag or label for "ActiveMQ Artemis Parent"? (artemis-pom) 2.31.0: :
What is the new development version for "ActiveMQ Artemis Parent"? (artemis-pom) 2.31.1-SNAPSHOT: : 2.32.0-SNAPSHOT
2016-08-16 16:18:58 -04:00
```
Otherwise snapshots would be created at 2.31.1-SNAPSHOT and probably left to go stale rather than get cleaned out if the next release is actually 2.32.0. (Unless we did ever release 2.31.1 in that example).
2016-08-16 16:18:58 -04:00
For more information look at the prepare plugin:
- https://maven.apache.org/maven-release/maven-release-plugin/prepare-mojo.html#pushChanges
2017-11-01 15:24:48 -04:00
If you set `pushChanges=false` then you will have to push the changes manually. The first command is to push the commits
which are for changing the `&lt;version>` in the pom.xml files, and the second push is for the tag, e.g.:
```sh
git push upstream
git push upstream <version>
```
## Uploading to nexus
2020-09-01 08:10:13 -04:00
Ensure that your environment is ready to deploy to the ASF Nexus repository as described at
[Publishing Maven Artifacts](https://infra.apache.org/publishing-maven-artifacts.html)
Copy the file release.properties, that is generated at the root of the project during the release,
before starting the upload. You could need it if the upload fails.
To upload it to nexus, perform this command:
```sh
mvn release:perform -Prelease
```
2020-09-01 08:10:13 -04:00
Note: this can take quite a while depending on the speed for your Internet connection.
If the upload fails or is interrupted, remove the incomplete repository
using the "Drop" button on [Nexus website](https://repository.apache.org/#stagingRepositories).
Before starting the upload again, check the release.properties at the root of the project.
### Resuming release upload
If something happened during the release upload to nexus, you may need to eventually redo the upload.
2020-09-01 08:10:13 -04:00
Remove the incomplete repository using the "Drop" button on [Nexus website](https://repository.apache.org/#stagingRepositories).
Before starting the upload again, check the release.properties at the root of the project.
2020-09-01 08:10:13 -04:00
There is a release.properties file that is generated at the root of the project during the release.
In case you want to upload a previously tagged release, add this file as follows:
- release.properties
```
scm.url=scm:git:https://github.com/apache/activemq-artemis.git
scm.tag=2.31.0
```
2016-08-16 16:18:58 -04:00
## Closing the staging repository
Give the staging repository contents a quick inspection using the content navigation area, then proceed to close the
staging repo using the "Close" button on Nexus website, locking it from further modification and exposing its contents
at a staging URL to allow testing. Set a description such as "ActiveMQ Artemis <version> (RC1)" while closing.
## Stage the release to the dist dev area
2016-08-16 16:18:58 -04:00
2020-09-01 08:10:13 -04:00
Use the closed staging repo contents to populate the dist dev svn area
with the official release artifacts for voting. Use the script already present
in the repo to download the files and populate a new ${CURRENT-RELEASE} dir:
2016-08-16 16:18:58 -04:00
```sh
svn co https://dist.apache.org/repos/dist/dev/activemq/activemq-artemis/
cd activemq-artemis
./prepare-release.sh https://repository.apache.org/content/repositories/orgapacheactivemq-${NEXUS-REPO-ID} ${CURRENT-RELEASE}
2016-08-16 16:18:58 -04:00
```
2017-11-01 15:24:48 -04:00
Give the files a check over and commit the new dir and start a vote if all looks well.
```bash
svn add <version>
svn commit
```
Old staged releases can be cleaned out periodically.
2020-09-01 08:10:13 -04:00
## Generate the git-report
Please, include the git-commit-report as part of the release process. To generate it, follow these steps:
- Check out the [activemq-website](https://gitbox.apache.org/repos/asf/activemq-website.git) repository.
- Execute the following commands:
```bash
$ cd activemq-website
$ ./scripts/release/create-artemis-git-report.sh <path.to/activemq-artemis> <previous-version> <version>
```
For example the command used for 2.31.0, which followed 2.30.0, could have been:
```bash
$ cd activemq-website
$ ./scripts/release/create-artemis-git-report.sh ../path.to/activemq-artemis 2.30.0 2.31.0
```
2020-09-01 08:10:13 -04:00
This will parse all the git commits between the previous and current release tag while looking at current JIRA status.
The report page should have been created in the website repo at: `src/components/artemis/download/commit-report-<version>.html`. Check it over and commit + push when satisfied.
2020-09-01 08:10:13 -04:00
## Cleanup JIRA
Use the git-report to do some JIRA cleanup making sure your commits and JIRA are accurate:
- Close as done all JIRA related at the commits included in the git-report
but exclude all JIRA related to a commit reverted by a commit included in the same git-report.
You can execute a bulk change on all JIRA related at the commits included in the git-report
using the link `JIRAS on this Report` at the bottom of the report.
- Ensure that the version next the version being released exists checking the [ActiveMQ Artemis Releases page](https://issues.apache.org/jira/projects/ARTEMIS?selectedItem=com.atlassian.jira.jira-projects-plugin:release-page).
If not, you need an administrator account to create it using the `Manage Versions` button at the [ActiveMQ Artemis Releases page](https://issues.apache.org/jira/projects/ARTEMIS?selectedItem=com.atlassian.jira.jira-projects-plugin:release-page)
- Move all JIRA not closed to the next release setting the `Fix Version` field.
- Regenerate the report once you cleared JIRA, to check your job.
2017-11-06 15:27:17 -05:00
2017-11-01 15:24:48 -04:00
## Locate Release Notes
1. Use the previous report to cleanup JIRA
2. Go to the "Releases" page for the Artemis JIRA project: https://issues.apache.org/jira/projects/ARTEMIS?selectedItem=com.atlassian.jira.jira-projects-plugin:release-page
3. Click on the version being released.
4. Click the "Release Notes" link near the top of the page.
5. Grab the URL to put into the VOTE email.
2017-11-01 15:24:48 -04:00
2017-11-06 15:27:17 -05:00
2017-11-01 15:24:48 -04:00
## Send Email
Once all the artifacts are stage then send an email to `dev@activemq.apache.org`. It should have a subject like `[VOTE]
Apache ActiveMQ Artemis <version>`. Here is an example for the body of the message:
```
I would like to propose an Apache ActiveMQ Artemis <version> release.
We added these new features as part of <version>:
[ARTEMIS-123] - Great new feature 1
[ARTEMIS-456] - Great new feature 2
The release notes can be found here:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=<releaseNotesVersionID>&projectId=12315920
Ths git commit report is here:
2021-02-09 17:42:22 -05:00
https://activemq.apache.org/components/artemis/download/commit-report-<version>
2017-11-01 15:24:48 -04:00
Source and binary distributions can be found here:
https://dist.apache.org/repos/dist/dev/activemq/activemq-artemis/<version>/
The Maven staging repository is here:
2017-11-01 15:24:48 -04:00
https://repository.apache.org/content/repositories/orgapacheactivemq-<repoID>
If you would like to validate the release:
https://activemq.apache.org/components/artemis/documentation/hacking-guide/#validating-releases
2017-11-01 15:24:48 -04:00
It is tagged in the git repo as <version>
2017-11-01 15:24:48 -04:00
[ ] +1 approve this release
2017-11-01 15:24:48 -04:00
[ ] +0 no opinion
[ ] -1 disapprove (and reason why)
Here's my +1
```
2016-08-16 16:18:58 -04:00
2017-11-06 15:27:17 -05:00
## Voting process
Rules for the Apache voting process are stipulated [here](https://www.apache.org/foundation/voting.html).
Assuming the vote is successful send a email with a subject like `[RESULT] [VOTE] Apache ActiveMQ Artemis <version>`
informing the list about the voting results, e.g.:
```
The vote passed with 4 votes, 3 binding and 1 non-binding.
2017-11-06 15:27:17 -05:00
The following votes were received:
Binding:
+1 John Doe
+1 Jane Doe
2017-11-06 15:27:17 -05:00
+1 Bill Smith
Non Binding:
+1 Mike Williams
Thank you to everyone who contributed and took the time to review the
release candidates and vote.
I will add the files to the dist release repo and release the maven
staging repo, updating the website once it has had time to sync to the
CDN and Maven Central.
2017-11-06 15:27:17 -05:00
Regards
```
## Promote artifacts to the dist release area
2016-12-12 10:18:44 -05:00
2017-11-01 15:24:48 -04:00
After a successful vote, populate the dist release area using the staged
2017-11-06 15:27:17 -05:00
files from the dist dev area to allow them to mirror. Note: this can only
be done by a PMC member.
2016-12-12 10:18:44 -05:00
2020-09-01 08:10:13 -04:00
Use the script already present in the repo to copy the staged files
from the dist dev area to the dist release area:
2016-12-12 10:18:44 -05:00
```sh
2020-09-01 08:10:13 -04:00
svn co https://dist.apache.org/repos/dist/dev/activemq/activemq-artemis/
cd activemq-artemis
./promote-release.sh ${CURRENT-RELEASE}
2016-12-12 10:18:44 -05:00
```
2017-11-06 15:27:17 -05:00
It takes a small period to sync with the CDN, say ~15mins. The CDN content can be viewed [here](https://dlcdn.apache.org/activemq/activemq-artemis/).
2017-11-06 15:27:17 -05:00
## Release the staging repo
Go to https://repository.apache.org/#stagingRepositories and click the "Release" button.
It takes a small period to sync with Maven Central, say ~30-60mins. The Central content can be viewed [here](https://repo1.maven.org/maven2/org/apache/activemq/).
2016-12-12 10:18:44 -05:00
## Web site update:
2016-12-12 10:18:44 -05:00
Wait for the CDN to sync first after updating SVN, and additionally for Maven Central to sync, before proceeding.
The CDN content can be viewed [here](https://dlcdn.apache.org/activemq/activemq-artemis/).
The Maven Central content can be viewed [here](https://repo1.maven.org/maven2/org/apache/activemq/).
Clone the activemq-website repository:
2020-09-01 08:10:13 -04:00
```sh
git clone https://gitbox.apache.org/repos/asf/activemq-website.git
cd activemq-website
2020-09-01 08:10:13 -04:00
```
2017-11-06 15:27:17 -05:00
Once the mirrors are up-to-date then update the following:
1. Generate the new release notes file at `src/components/artemis/download/release-notes-<new-version>.md` by running the command:
```
./scripts/release/create-artemis-release-notes <new-version>
```
2. Generate the new release collection file at `src/_artemis_releases/artemis-<padded-version-string>.md` by running the following command, then open the file and update shortDescription as appropriate:
```
./scripts/release/create-artemis-release-file <new-version, e.g. 2.32.0>
```
3. Update the _artemis_ list within the `src/_data/current_releases.yml` file if needed.
ARTEMIS-4383 migrate user docs to AsciiDoc Markdown, which is currently used for user-facing documentation, is good for a lot of things. However, it's not great for the kind of complex documentation we have and our need to produce both multi-page HTML and single-page PDF output via Maven. Markdown lacks features which would make the documentation easier to read, easier to navigate, and just look better overall. The current tool-chain uses honkit and a tool called Calibre. Honkit is written in TypeScript and is installed via NPM. Calibre is a native tool so it must be installed via an OS-specific package manager. All this complexity makes building, releasing, uploading, etc. a pain. AsciiDoc is relatively simple like Markdown, but it has more features for presentation and navigation not to mention Java-based Maven tooling to generate both HTML and PDF. Migrating will improve both the appearance of the documentation as well as the processes to generate and upload it. This commit contains the following changes: - Convert all the Markdown for the User Manual, Migration Guide, and Hacking guide to AsciiDoc via kramdown [1]. - Update the `artemis-website` build to use AsciiDoctor Maven tooling. - Update `RELEASING.md` with simplified instructions. - Update Hacking Guide with simplified instructions. - Use AsciiDoc link syntax in Artemis Maven doc plugin. - Drop EPUB & MOBI docs for User Manual as well as PDF for the Hacking Guide. All docs will be HTML only except for the User Manual which will have PDF. - Move all docs up out of their respective "en" directory. This was a hold-over from when we had docs in different languages. - Migration & Hacking Guides are now single-page HTML since they are relatively short. - Refactor README.md to simplify and remove redundant content. Benefits of the change: - Much simplified tooling. No more NPM packages or native tools. - Auto-generated table of contents for every chapter. - Auto-generated anchor links for every sub-section. - Overall more appealing presentation. - All docs will use the ActiveMQ favicon. - No more manual line-wrapping! AsciiDoc recommends one sentence per line and paragraphs are separated by a blank line. - AsciiDoctor plugins for IDEA are quite good. - Resulting HTML is less than *half* of the previous size. All previous links/bookmarks should continue to work. [1] https://github.com/asciidoctor/kramdown-asciidoc
2023-07-27 23:45:17 -04:00
4. Rename `src/components/artemis/documentation/latest` to `src/components/artemis/documentation/<old-version>`.
5. Build the `artemis-website` module from the new-version release sources with `mvn clean package -Prelease`.
ARTEMIS-4383 migrate user docs to AsciiDoc Markdown, which is currently used for user-facing documentation, is good for a lot of things. However, it's not great for the kind of complex documentation we have and our need to produce both multi-page HTML and single-page PDF output via Maven. Markdown lacks features which would make the documentation easier to read, easier to navigate, and just look better overall. The current tool-chain uses honkit and a tool called Calibre. Honkit is written in TypeScript and is installed via NPM. Calibre is a native tool so it must be installed via an OS-specific package manager. All this complexity makes building, releasing, uploading, etc. a pain. AsciiDoc is relatively simple like Markdown, but it has more features for presentation and navigation not to mention Java-based Maven tooling to generate both HTML and PDF. Migrating will improve both the appearance of the documentation as well as the processes to generate and upload it. This commit contains the following changes: - Convert all the Markdown for the User Manual, Migration Guide, and Hacking guide to AsciiDoc via kramdown [1]. - Update the `artemis-website` build to use AsciiDoctor Maven tooling. - Update `RELEASING.md` with simplified instructions. - Update Hacking Guide with simplified instructions. - Use AsciiDoc link syntax in Artemis Maven doc plugin. - Drop EPUB & MOBI docs for User Manual as well as PDF for the Hacking Guide. All docs will be HTML only except for the User Manual which will have PDF. - Move all docs up out of their respective "en" directory. This was a hold-over from when we had docs in different languages. - Migration & Hacking Guides are now single-page HTML since they are relatively short. - Refactor README.md to simplify and remove redundant content. Benefits of the change: - Much simplified tooling. No more NPM packages or native tools. - Auto-generated table of contents for every chapter. - Auto-generated anchor links for every sub-section. - Overall more appealing presentation. - All docs will use the ActiveMQ favicon. - No more manual line-wrapping! AsciiDoc recommends one sentence per line and paragraphs are separated by a blank line. - AsciiDoctor plugins for IDEA are quite good. - Resulting HTML is less than *half* of the previous size. All previous links/bookmarks should continue to work. [1] https://github.com/asciidoctor/kramdown-asciidoc
2023-07-27 23:45:17 -04:00
6. Create `src/components/artemis/documentation/latest` and copy into it the contents of `target/classes/user-manual` from the `artemis-website` module which you just built.
7. Delete `src/components/artemis/documentation/javadocs/javadoc-latest` to clear the old/existing content (in case any files are being moved/removed by the new version).
8. Create `src/components/artemis/documentation/javadocs/javadoc-latest` again and copy into it the contents of `target/apidocs` from the `artemis-website` module which you just built.
2017-11-06 15:27:17 -05:00
Run `git add` for all the added directories & files and then `git commit -m "updates for <version> release"`.
Once pushed, the changes should be published automatically by the `jekyll_websites` builder of the [apache buildbot](https://ci2.apache.org/#/builders).
2017-11-06 15:27:17 -05:00
## Update Examples Repo
The [examples repo](https://github.com/apache/activemq-artemis-examples) should be updated to reflect the new release and development versions.
Take a fresh clone of the repo and run the provided script, then check the results and push.
```
git clone https://gitbox.apache.org/repos/asf/activemq-artemis-examples.git
cd activemq-artemis-examples
./scripts/release/update-branch-versions.sh <release-version> <new-main-snapshot-version>"
```
Example from the 2.32.0 release:
```
git clone https://gitbox.apache.org/repos/asf/activemq-artemis-examples.git
cd activemq-artemis-examples
./scripts/release/update-branch-versions.sh 2.32.0 2.33.0-SNAPSHOT"
```
Check things over and then push the `development` and `main` branches (optionally use your fork, to test things out before pushing to the main examples repo or even to raise PRs).
NOTE: The `main` branch CI build does not build Artemis, so the release must be available on Maven Central before pushing main or the build will fail. The `development` branch will check out the Artemis main branch and build against that, or it can be manually triggered and pointed to e.g a release tag.
## Upload Docker Images
1. If you don't have an account on https://hub.docker.com/ then create one.
2. [Install `docker`](https://docs.docker.com/engine/install/) in your environment.
3. Ensure you have access to push images to `apache/activemq-artemis`. If you don't have access you can request it by
creating an INFRA Jira ticket (e.g. https://issues.apache.org/jira/browse/INFRA-24831).
4. Go to the `scripts` directory and run `release-docker.sh` with the proper parameters, e.g.:
```shell
$ ./release-docker.sh 2.31.0 apache
```
You can easily perform a test run by using your personal account, e.g.:
```shell
$ ./release-docker.sh 2.31.0 jbertram
```
2017-11-06 15:27:17 -05:00
## Send announcement to user list
Once the website is updated then send an email with a subject like `[ANNOUNCE] ActiveMQ Artemis <version> Released` to
`user@activemq.apache.org` & `dev@activemq.apache.org`, e.g.:
```
I'm pleased to announce the release of ActiveMQ Artemis <version>.
Downloads are now available at:
2021-02-17 15:57:14 -05:00
https://activemq.apache.org/components/artemis/download/
2017-11-06 15:27:17 -05:00
For a complete list of updates:
2021-02-17 15:57:14 -05:00
https://activemq.apache.org/components/artemis/download/release-notes-<version>
2017-11-06 15:27:17 -05:00
I would like to highlight these improvements:
- Summary of feature 1:
<link to relevant documentation>
- Summary of feature 2:
<link to relevant documentation>
- Summary of feature 3:
<link to relevant documentation>
As usual it contains a handful of bug fixes and other improvements.
Many thanks for all the contributors to this release.
```
## Cleaning older releases out of the dist release area
Only the current releases should be mirrored. Older releases must be cleared:
```sh
svn rm -m "clean out older release" https://dist.apache.org/repos/dist/release/activemq/activemq-artemis/${OLD-RELEASE}
```
Any links to them on the site must be updated to reference the ASF archive instead at
2017-11-06 15:27:17 -05:00
https://archive.apache.org/dist/activemq/activemq-artemis/ (this should already have been done implicitly in the previous step).
2016-12-12 10:18:44 -05:00
Ensure old releases are only removed after the site is updated in order to avoid broken links.
2023-01-18 15:04:35 -05:00
## Update Apache Release Data
Use https://reporter.apache.org/addrelease.html?activemq to update the release information.
This information will be used in the quarterly reports submitted to the Apache Board.
2017-11-06 15:27:17 -05:00
## Apache Guide
For more information consult the apache guide at this address:
* http://www.apache.org/dev/publishing-maven-artifacts.html