You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by gz...@apache.org on 2019/04/14 17:34:02 UTC

[camel] branch master updated: Add initial version of the release guide (building part).

This is an automated email from the ASF dual-hosted git repository.

gzurowski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new a837d96  Add initial version of the release guide (building part).
a837d96 is described below

commit a837d960edc0a9a64239efaa61fd2a5fc498341a
Author: Gregor Zurowski <gr...@zurowski.org>
AuthorDate: Sun Apr 14 19:33:49 2019 +0200

    Add initial version of the release guide (building part).
    
    Signed-off-by: Gregor Zurowski <gr...@zurowski.org>
---
 .../modules/ROOT/pages/release-guide.adoc          | 165 +++++++++++++++++++++
 1 file changed, 165 insertions(+)

diff --git a/docs/user-manual/modules/ROOT/pages/release-guide.adoc b/docs/user-manual/modules/ROOT/pages/release-guide.adoc
new file mode 100644
index 0000000..0542c44
--- /dev/null
+++ b/docs/user-manual/modules/ROOT/pages/release-guide.adoc
@@ -0,0 +1,165 @@
+[[ReleaseGuide-ReleaseGuide]]
+=== How to Create and Announce a Camel Release
+
+[[ReleaseGuide-Prequisites]]
+==== Prequisites
+
+To prepare or perform a release you *must be* at least an Apache Camel committer.
+
+* The artifacts for each and every release must be *signed*.
+* Your public key must be added to the KEYS file.
+* Your public key should also be cross-signed by other Apache committers (this can be done at key signing parties at
+ApacheCon for instance).
+* Make sure you have the correct maven configuration in `~/.m2/settings.xml`.
+* https://github.com/takari/maven-wrapper[Maven Wrapper] is used and bundled with Camel 2.21 onwards and should be used
+for building the release.
+* You may want to get familiar with the release settings in the parent Apache POM.
+* Make sure you are using Java 1.8 for Apache Camel 2.18.0 and later.
+
+[[ReleaseGuide-MavenSetup]]
+==== Maven Setup
+Before you deploy anything to the https://repository.apache.org[Apache Nexus repository] using Maven, you should
+configure your `~/.m2/settings.xml` file so that the file permissions of the deployed artifacts are group writable.
+If you do not do this, other developers will not able to overwrite your SNAPSHOT releases with newer versions.
+
+The settings follow the guidelines used by the Maven project. Please pay particular attention to the
+http://maven.apache.org/guides/mini/guide-encryption.html[password encryption recommendations].
+
+----
+<settings>
+  ...
+  <servers>
+    <!-- Per http://maven.apache.org/developers/committer-settings.html -->
+
+    <!-- To publish a snapshot of some part of Maven -->
+    <server>
+      <id>apache.snapshots.https</id>
+      <username> <!-- YOUR APACHE LDAP USERNAME --> </username>
+      <password> <!-- YOUR APACHE LDAP PASSWORD --> </password>
+    </server>
+    <!-- To publish a website of some part of Maven -->
+    <server>
+      <id>apache.website</id>
+      <username> <!-- YOUR APACHE LDAP USERNAME --> </username>
+      <filePermissions>664</filePermissions>
+      <directoryPermissions>775</directoryPermissions>
+    </server>
+    <!-- To stage a release of some part of Maven -->
+    <server>
+      <id>apache.releases.https</id>
+      <username> <!-- YOUR APACHE LDAP USERNAME --> </username>
+      <password> <!-- YOUR APACHE LDAP PASSWORD --> </password>
+    </server>
+    <!-- To stage a website of some part of Maven -->
+    <server>
+      <id>stagingSite</id> <!-- must match hard-coded repository identifier in site:stage-deploy -->
+      <username> <!-- YOUR APACHE LDAP USERNAME --> </username>
+      <filePermissions>664</filePermissions>
+      <directoryPermissions>775</directoryPermissions>
+    </server>
+
+  </servers>
+  ...
+  <profiles>
+    <profile>
+      <id>apache-release</id>
+      <properties>
+        <gpg.useagent>false</gpg.useagent>
+        <gpg.passphrase><!-- YOUR GPG PASSPHRASE --></gpg.passphrase>
+        <test>false</test>
+      </properties>
+    </profile>
+
+  </profiles>
+...
+</settings>
+----
+
+[[ReleaseGuide-CreatingTheRelease]]
+==== Creating the Release
+
+Complete the following steps to create a new Camel release:
+
+1. Grab the latest source from Git and checkout the target branch (`BRANCH_NAME`) to build from:
+
+----
+$ git clone https://git-wip-us.apache.org/repos/asf/camel.git
+$ cd camel
+$ git checkout BRANCH_NAME
+----
+
+2. Perform a license check with http://creadur.apache.org/rat/apache-rat-plugin[Apache Rat]:
+
+----
+./mvnw -e org.apache.rat:apache-rat-plugin:check
+grep -e ' !?????' target/rat.txt
+----
+
+The latter command will provide a list of all files without valid license headers.
+Ideally this list is empty, otherwise fix the issues by adding valid license headers and rerun the above commands before
+proceeding with the next step.
+
+3. Do a release dry run to check for problems:
+
+----
+./mvnw release:prepare -DdryRun -Prelease
+----
+
+The release plugin will prompt for a release version, an SCM tag and next release version.
+
+Use a three digit release version of the form: `MAJOR.MINOR.PATCH`, e.g. `3.0.0`.
+
+For the tag use a string of the form: `camel-MAJOR.MINOR.PATCH`, e.g. `camel-3.0.0`.
+
+For the next version increase the patch version and append `-SNAPSHOT`, e.g. `3.0.1-SNAPSHOT`.
+
+Make sure to check the generated signature files:
+
+----
+$ gpg camel-core/target/camel-core-3.0.0-SNAPSHOT.jar.asc
+gpg: assuming signed data in `camel-core/target/camel-core-3.0.0.jar'
+gpg: Signature made Sat 06 Apr 2019 03:58:01 AM PDT using RSA key ID 5942C049
+gpg: Good signature from "Gregor Zurowski <gz...@apache.org>"
+----
+
+4. Prepare the release:
+
+First clean up the dry run results:
+
+----
+$ ./mvnw release:clean -Prelease
+----
+
+Next prepare the release:
+
+----
+$ ./mvnw release:prepare -Prelease
+----
+
+This command will create the tag and update all pom files with the given version number.
+
+5. Perform the release and publish to the Apache staging repository:
+
+----
+$ ./mvnw release:perform -Prelease
+----
+
+6. Close the Apache staging repository:
+
+Login to https://repository.apache.org using your Apache LDAP credentials.
+Click on "Staging Repositories". Then select "org.apache.camel-xxx" in the list of repositories, where xxx represents
+your username and ip.
+Click "Close" on the tool bar above.
+This will close the repository from future deployments and make it available for others to view.
+If you are staging multiple releases together, skip this step until you have staged everything.
+Enter the name and version of the artifact being released in the "Description" field and then click "Close".
+This will make it easier to identify it later.
+
+7. Verify staged artifacts:
+
+If you click on your repository, a tree view will appear below.
+You can then browse the contents to ensure the artifacts are as you expect them.
+Pay particular attention to the existence of *.asc (signature) files.
+If the you don't like the content of the repository, right click your repository and choose "Drop".
+You can then rollback your release and repeat the process.
+Note the repository URL, you will need this in your vote email.