blob: fb9cf6cd7eb290f9b21bacee007f592c51890d0d [file] [log] [blame]
////
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
////
= Making a release
:jbake-type: page
:jbake-tags: maven
:jbake-status: published
:idprefix:
## Release Preparation
- Elect a release manager.
- Create a ticket for a new release in JIRA. If you do not have permission to do so just ask to be given permissions on the mailing list.
- Review all of the JIRA issues associated with the release. All issues should be resolved and closed.
- Any issues assigned to the release that are not complete should be assigned to the next release. Any critical or blocker issues should be resolved on the mailing list. Discuss any issues that you are unsure of on the mailing list.
## Steps for the Release Manager
The following steps need only to be performed once.
- Make sure you have your PGP key entered into https://id.apache.org/.
Your KEYS will then be present in https://people.apache.org/keys/group/opennlp.asc.
- Make sure you have your PGP keys password.
- Add your PGP key to the KEYS file:
----
Examples of adding your key to this file:
pgp -kxa <your name> and append it to this file.
(pgpk -ll <your name> && pgpk -xa <your name>) >> this file.
(gpg --list-sigs <your name>
&& gpg --armor --export <your name>) >> this file.
----
- In a local temp folder, svn checkout the OpenNLP artifacts and update the KEYS file
----
svn co https://dist.apache.org/repos/dist/release/opennlp/
svn commit -m"Added Key for <name>" KEYS
----
- Create a maven `settings.xml` to publish to `repository.apache.org`. An example configuration:
----
<server>
<id>apache.releases.https</id>
<username>Your Apache Username</username>
<password>Your Apache Password</password>
</server>
----
## Release Steps
- Checkout the Apache OpenNLP master branch: `git clone git@github.com:apache/opennlp.git`
- Execute a complete test (it can take several hours): `mvn test -DOPENNLP_DATA_DIR=/path/to/opennlp-test-data/ -Peval-tests`
- Do a trial build: `mvn package -Papache-release`
- Prepare the release: `mvn release:prepare` Answer the questions appropriately. The tag name format should be *opennlp-x.y.z*.
This command creates and pushes two new commits to the repository to reflect the version changes. It also tags the release.
### Successful Maven Release Preparation
#### Perform the Release
Perform the release: `mvn release:perform`
This creates a staged repository at http://repository.apache.org.
Check the staged repository and if all looks well, close the staging repository but do *not* promote or release it at this time.
The build results are in `opennlp/target/checkout/target`. Do not modify or delete these files.
#### Check the Release Artifacts
Perform basic checks against the release binary:
- Check signature of generated artifacts.
- Check presence and appropriateness of `LICENSE`, `NOTICE`, and `README` files.
#### Create a VOTE Thread
- Notify the developer mailing list of a new version vote. Be sure to replace all values in `[]` with the appropriate values.
Message Subject: [VOTE] Apache OpenNLP [version] Release Candidate
----
Hi folks,
I have posted a [Nth] release candidate for the Apache OpenNLP [version] release and it is ready for testing.
The distributables can be downloaded from:
https://repository.apache.org/content/repositories/orgapacheopennlp-[REPO_NUM]/org/apache/opennlp/opennlp-distr/[VERSION]/
The release was made from the Apache OpenNLP [VERSION] tag at:
https://github.com/apache/opennlp/tree/opennlp-[VERSION]
To use it in a maven build set the version for opennlp-tools or opennlp-uima to [VERSION] and add the following URL to your settings.xml file:
https://repository.apache.org/content/repositories/orgapacheopennlp-[REPO_NUM]
The release was made using the OpenNLP release process, documented on the website:
https://opennlp.apache.org/release.html
Please vote on releasing these packages as Apache OpenNLP [VERSION]. The vote is open for at least the next 72 hours.
Only votes from OpenNLP PMC are binding, but everyone is welcome to check the release candidate and vote.
The vote passes if at least three binding +1 votes are cast.
[ ] +1 Release the packages as Apache OpenNLP [VERSION]
[ ] -1 Do not release the packages because...
Thanks!
----
## After a Successful Vote
The vote is successful if at least 3 +1 votes are received from OpenNLP PMC members after a minimum of 72 hours of sending the vote email.
Acknowledge the voting results on the mailing list in the VOTE thread.
### Release Nexus Staging Repository
Release the staging repository. This will make the artifacts available in the Maven Central repository.
To do this go to the http://repository.apache.org[repository server], log in, go to the staging area and release the staging repository linked to this release
### Commit Distribution to SVN
Commit the distribution via SVN to https://dist.apache.org/repos/dist/release:
----
svn co https://dist.apache.org/repos/dist/release/opennlp/ dist
# check if the KEYS file contains your key, if not, update it
# copy opennlp/target/checkout/target/apache-opennlp* to dist/opennlp-<VERSION>
svn commit --username <username>
----
### Archive Old Release(s)
To reduce the load on the ASF mirrors, projects are required to delete old releases (see http://www.apache.org/legal/release-policy.html#when-to-archive).
Remove the old releases from SVN under https://dist.apache.org/repos/dist/release/opennlp/.
### Update the Website
Update the website once the new version appears in the Apache download mirrors (keep checking http://www.apache.org/dyn/closer.cgi/opennlp until you see something):
#### Update jbake.properties
Update the `jbake.properties` file to include the new version numbers:
```
opennlp.version=
opennlp.next.version=
```
#### Add New Artifact Item
Add a new artifactItem in the pom.xml for the new OpenNLP release. (This automatically pulls in the details and javadocs for the new version when the site is built.):
[source,xml,indent=0,subs=attributes+]
----
<artifactItem>
<groupId>org.apache.opennlp</groupId>
<artifactId>opennlp-distr</artifactId>
[version]${project.version}</version>
<overWrite>false</overWrite>
<type>zip</type>
<classifier>bin</classifier>
<outputDirectory>${project.build.directory}/distr/1.8.1</outputDirectory>
</artifactItem>
----
#### Update Documentation Links
Move the last version's links to the documentation to the Legacy Documentation (https://opennlp.apache.org/docs/legacy.html) page. Add the following lines at the beginning of `docs/legacy.ad`:
----
### Apache OpenNLP ${previous.release} documentation
* link:/docs/${previous.release}/manual/opennlp.html[Apache OpenNLP Manual]
* link:/docs/${previous.release}/apidocs/opennlp-tools/index.html[Apache OpenNLP Tools Javadoc]
* link:/docs/${previous.release}/apidocs/opennlp-uima/index.html[Apache OpenNLP UIMA Javadoc]
* link:/docs/${previous.release}/apidocs/opennlp-brat-annotator/index.html[Apache OpenNLP BRAT Annotator Javadoc]
* link:/docs/${previous.release}/apidocs/opennlp-morfologik-addon/index.html[Apache OpenNLP Morfologik Addon Javadoc]
----
#### Update doap_opennlp.rdf
- Update the `doap_opennlp.rdf` file to reflect the new version.
#### Update Properties
- Update the properties `opennlp.version` and `opennlp.next.version` in `jbake.properties`.
#### Add News Item
- Add a news item in `news/release-{xyz}.ad` by copying the content from OpenNLP project `opennlp-distr/src/README`.
#### Commit Website Changes.
- Commit the website changes.
- Rebuild opennlp-site and redeploy the site (if Automatic Buildbot doesn't kick in)
- Test and review the website. Test that all download links are working. Test that the documentation is updated and can be viewed
### Post-Release Steps
- Log the new version at https://reporter.apache.org/addrelease.html?opennlp.
- Announce the new version on the OpenNLP Twitter.
- Announce the new version on the Apache OpenNLP blog at https://blogs.apache.org/opennlp/.
- Close the present release ticket in JIRA.
- Send announcement email to announce@apache.org, dev@opennlp.apache.org, users@opennlp.apache.org. This needs to be done from your @apache.org email address or the email will bounce from the announce list. Gmail forwarding can help here and is a snap to set up (http://gmailblog.blogspot.com/2009/07/send-mail-from-another-address-without.html). It's even easier then the instructions there as it will recognize your email address and default to Apache settings. It is important to include a description of what OpenNLP is as well as a link to the updated DOAP within the release announcement, this is so others know what OpenNLP is.
----
Title: [ANNOUNCE] OpenNLP <version> released
TO: announce@apache.org, users@opennlp.apache.org, dev@opennlp.apache.org
----
Message body:
----
The Apache OpenNLP team is pleased to announce the release of version <version> of Apache OpenNLP. The Apache OpenNLP library is a machine learning based toolkit for the processing of natural language text. It supports the most common NLP tasks, such as tokenization, sentence segmentation, part-of-speech tagging, named entity extraction, chunking, and parsing.
The OpenNLP <version> binary and source distributions are available for download from our download page: https://opennlp.apache.org/download.html
The OpenNLP library is distributed by Maven Central as well. See the Maven Dependency page for more details: http://opennlp.apache.org/maven-dependency.html
Changes in this version:
** TODO UPDATE THIS >>
- change 1
- change 2
<< TODO UPDATE THIS **
For a complete list of fixed bugs and improvements please see the RELEASE_NOTES file included in the distribution.
The Apache OpenNLP Team
----
## After an Unsuccessful Vote
The release vote may fail due to an issue discovered in the release candidate. If the vote fails the release should be canceled by:
- Sending an email to dev@opennlp.apache.org on the VOTE thread notifying of the vote's cancellation.
- Dropping the staging repository at https://repository.apache.org/.
- Renaming the `opennlp-x.y.x` tag to `opennlp-x.y.z-RC1`.
A new release candidate can now be prepared. When complete, a new VOTE thread can be started as described in the steps above.