[ https://issues.apache.org/jira/browse/QPID-8361?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16934348#comment-16934348 ]
ASF GitHub Bot commented on QPID-8361: -------------------------------------- alex-rufous commented on pull request #36: QPID-8361: [Broker-J] Create a developer guide for Qpid Broker-J URL: https://github.com/apache/qpid-broker-j/pull/36#discussion_r326602958 ########## File path: doc/developer-guide/src/main/markdown/release-instructions.md ########## @@ -0,0 +1,193 @@ +# Releasing Qpid Broker-J + +This document summarizes the steps of release process for Qpid Broker-J + +<!-- toc --> + +- [Pre-Requirements](#pre-requirements) + * [PGP](#pgp) + * [Maven](#maven) + * [Java](#java) + * [Git](#git) +- [Release Steps](#release-steps) + +<!-- tocstop --> + +## Pre-Requirements + +The release process is based on [Apache Release Policy](http://www.apache.org/dev/release.html), + [Release Signing](http://www.apache.org/dev/release-signing.html) and + [Publishing of Maven Documents](http://www.apache.org/dev/publishing-maven-artifacts.html#dev-env). + +### PGP + +Release artifacts needs to be signed. GNU Privacy Guard from [OpenPGP](https://www.openpgp.org) is used to sign on + Apache. Please, refer [Release Signing](http://www.apache.org/dev/release-signing.html) about PGP public key + cryptography. The document provides basic information about release signing and contains links to various resources + about PGP public key cryptography and how to use GNU Privacy Guard to generate and sign the PGP keys. Install + [GNU Privacy Guard](http://www.gnupg.org), generate keys following steps provided here and upload public keys to + keyservers . After publishing keys, login into <https://id.apache.org> and enter PGP key fingerprint(s), + then the corresponding keys will be made available under <https://people.apache.org/keys/> within a few hours. + Additionally, qpid project requires adding a public key into <https://dist.apache.org/repos/dist/release/qpid/KEYS>. + +### Maven + +Maven is used to build and manage Qpid Java project. 3.x version of maven needs to be installed and the development + environment should be setup as described at + [Publishing of Maven Artifacts](http://www.apache.org/dev/publishing-maven-artifacts.html#dev-env). + +Please, note that repository id (server id) in `setting.xml` should be **apache.releases.https**. Using different id + would result in failures to publish release artifacts into staging maven repo. + + +### Java + +JDK 1.8 is required to compile java classes. Install latest 1.8 JDK. At the moment of writing this document JDK version +1.8.0_192 was the latest one. + +### Git + +Sources are kept in a Git repository. Thus a git client is required. + +## Release Steps + +1. Checkout Qpid Broker-J Sources + * For new major/minor release; checkout sources master + + git clone https://gitbox.apache.org/repos/asf/qpid-broker-j.git qpid-broker-j + * For bugfix release + * if support branch does not exist, cut the support branch and set the correct version in maven. + For example, here are the commands to cut branch '8.0.x' + + git clone https://gitbox.apache.org/repos/asf/qpid-broker-j.git qpid-broker-j + cd ./qpid-broker-j + git checkout -b 8.0.x + git push -u origin 8.0.x + * if branch exists, checkout branch sources + + git clone -b 8.0.x https://gitbox.apache.org/repos/asf/qpid-broker-j.git 8.0.x + cd 8.0.x +2. Run RAT tool to verify that all source files have license headers + + mvn apache-rat:check +3. Add license headers to the files which do not have licenses. Update RAT excludes if required. +4. Check that images don't have a non-free ICC profile. + + find . -regextype posix-extended -iregex '.*\.(jpg|png|ico|tif)' -exec sh -c 'identify -verbose "$0" | grep -i copyright && echo "$0"' {} \; +5. Check that build completes successfully using profile **apache-release** + + mvn clean install -Papache-release -DskipTests + The gpg plugin will prompt for the password of PGP signing key. If password is asked for every release artifact, + then gpg2 should be configured to use. The easiest way to configure gpg2 is to add an active profile with pgp + plugin settings into `settings.xml` as illustrated in [maven settings example](examples/maven-settings.md). +6. Verify third party licenses + + mvn -Pdependency-check prepare-package -DskipTests + The check should finish successfully. Otherwise, dependencies with not complaint licenses should be resolved + before taking next release step. +7. Check JIRA system for any unresolved JIRAs for the release and notify assigned developers to take actions + on uncompleted JIRAs. +8. Build RC + * If it is not a first RC, remove previous tag from git + + git push --delete origin x.y.z + git tag --delete x.y.z # deletes local tag + * Cut the tag using maven:prepare + + mvn release:clean + mvn release:prepare -Papache-release,java-mms.1-0 -DautoVersionSubmodules=true -DpreparationGoals=test + Release plugin will ask about new release version, tag name and new development version. + Enter the same values for version and tag. + On successful execution a tag with a provided name will be created, the tag version will be set to the specified + release version and development version on the branch will be changed to the provided one. + * Build the RC and publish release artifacts into maven staging repo + + mvn release:perform -Papache-release,java-mms.1-0 -Darguments="-DskipTests" + * The staging maven repository needs to be closed. Log into + [Apache Nexus UI](https://repository.apache.org/#stagingRepositories), select the repository under + **Staging Repository** and click `Close` button to close staging repository for any publishing of artifacts. + After closing, a permanent link to the staging repository will be available. + * Copy source and binary bundles and their signatures/checksum files from the nexus staging repository into + qpid dev staging area at <https://dist.apache.org/repos/dist/dev/qpid/broker-j/> under the sub-folder with + the same name as tag. Binary bundles and their signatures/checksum files need to be put into sub-folder + with name binaries. (Not doing so would break the site). Manually rename the source artefact to keep with Review comment: Fixed ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > [Broker-J] Create a developer guide for Qpid Broker-J > ----------------------------------------------------- > > Key: QPID-8361 > URL: https://issues.apache.org/jira/browse/QPID-8361 > Project: Qpid > Issue Type: Task > Components: Broker-J > Reporter: Alex Rudyy > Priority: Major > Fix For: qpid-java-broker-8.0.0 > > > The developer documentation is currently scattered over various Qpid > confluence pages. It could be challenging for people interested in > contributing to the project to find that documentation. A developer guide > could be added to cover such aspects as > * Environment Setup > * Building project > * Running tests > * Releasing > * Architecture overview > The following wiki pages are good candidates for inclusion into a developer > guide: > [High Level > Architecture|https://cwiki.apache.org/confluence/display/qpid/High+Level+Architecture] > [How To Build Qpid > Broker-J|https://cwiki.apache.org/confluence/display/qpid/How+To+Build+Qpid+Broker-J] > [Releasing Qpid > Broker-J|https://cwiki.apache.org/confluence/display/qpid/Releasing+Qpid+Broker-J] > The wiki pages below might be included as well > [Java Coding > Standards|https://cwiki.apache.org/confluence/display/qpid/Java+Coding+Standards] > [Qpid Java Run > Scripts|https://cwiki.apache.org/confluence/display/qpid/Qpid+Java+Run+Scripts] > The developer documentation should be easy to modify, maintain and preview. > Thus, it can be written in markdown or > [asciidoc|https://asciidoctor.org/docs/asciidoc-syntax-quick-reference/]. The > latter is also supported on github. > Potentially, it can be published on Qpid project site as part of release > process. -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org