= Deploy Gerrit Artifacts

[[deploy-configuration-setting-maven-central]]
== Deploy Configuration settings for Maven Central

Some Gerrit artifacts (e.g. the Gerrit WAR file, the Gerrit Plugin API
and the Gerrit Extension API) are published on Maven Central in the
`com.google.gerrit` repository.

To be able to publish artifacts to Maven Central some preparations must
be done:

* Create a Sonatype account as described in the
link:https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide#SonatypeOSSMavenRepositoryUsageGuide-2.Signup[
Sonatype OSS Maven Repository Usage Guide].
+
Sonatype is the company that runs Maven Central and you need a Sonatype
account for uploading artifacts to Maven Central.

* Configure your Sonatype user and password in `~/.m2/settings.xml`:
+
----
<server>
  <id>sonatype-nexus-staging</id>
  <username>USER</username>
  <password>PASSWORD</password>
</server>
----

* Request permissions to upload artifacts to the `com.google.gerrit`
repository on Maven Central:
+
Ask for this permission by adding a comment on the
link:https://issues.sonatype.org/browse/OSSRH-7392[OSSRH-7392] Jira
ticket at Sonatype.
+
The request needs to be approved by someone who already has this
permission by commenting on the same issue.

* Generate and publish a PGP key
+
Generate and publish a PGP key as described in
link:https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven[
How To Generate PGP Signatures With Maven].
+
Please be aware that after publishing your public key it may take a
while until it is visible to the Sonatype server.
+
The PGP key is needed to be able to sign the artifacts before the
upload to Maven Central.
+
The PGP passphrase can be put in `~/.m2/settings.xml`:
+
----
<settings>
  <profiles>
    <profile>
      <id>gpg</id>
      <properties>
        <gpg.executable>gpg2</gpg.executable>
        <gpg.passphrase>mypassphrase</gpg.passphrase>
      </properties>
    </profile>
  </profiles>
  <activeProfiles>
    <activeProfile>gpg</activeProfile>
  </activeProfiles>
</settings>
----
+
It can also be included in the key chain on OS X.

[[deploy-configuration-settings-xml]]
== Deploy Configuration in Maven `settings.xml`

Gerrit Subproject Artifacts are stored on
link:https://developers.google.com/storage/[Google Cloud Storage].
Via the link:https://code.google.com/apis/console/?noredirect[API Console] the
Gerrit maintainers have access to the `Gerrit Code Review` project.
This projects host several buckets for storing Gerrit artifacts:

* `gerrit-api`:
+
Bucket to store the Gerrit Extension API Jar and the Gerrit Plugin API
Jar.

* `gerrit-maven`:
+
Bucket to store Gerrit Subproject Artifacts (e.g. `gwtjsonrpc` etc.).

To upload artifacts to a bucket the user must authenticate with a
username and password. The username and password need to be retrieved
from the link:https://code.google.com/apis/console/?noredirect[API Console]:

* Go to the `Gerrit Code Review` project
* In the menu on the left select `Google Cloud Storage` >
`Interoperable Access`
* Use the `Access Key` as username
* Click under `Secret` on the `Show` button to find the password

To make the username and password known to Maven, they must be
configured in the `~/.m2/settings.xml` file.

----
  <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <servers>
      <server>
        <id>gerrit-api-repository</id>
        <username>GOOG..EXAMPLE.....EXAMPLE</username>
        <password>EXAMPLE..EXAMPLE..EXAMPLE</password>
      </server>
      <server>
        <id>gerrit-maven-repository</id>
        <username>GOOG..EXAMPLE.....EXAMPLE</username>
        <password>EXAMPLE..EXAMPLE..EXAMPLE</password>
      </server>
      <server>
        <id>gerrit-plugins-repository</id>
        <username>GOOG..EXAMPLE.....EXAMPLE</username>
        <password>EXAMPLE..EXAMPLE..EXAMPLE</password>
      </server>
    </servers>
  </settings>
----

[[deploy-configuration-subprojects]]
=== Gerrit Subprojects

* You will need to have the following in the `pom.xml` to make it
deployable to the `gerrit-maven` storage bucket:

----
  <distributionManagement>
    <repository>
      <id>gerrit-maven-repository</id>
      <name>Gerrit Maven Repository</name>
      <url>gs://gerrit-maven</url>
      <uniqueVersion>true</uniqueVersion>
    </repository>
  </distributionManagement>
----


* Add this to the `pom.xml` to enable the wagon provider:

----
  <build>
    <extensions>
      <extension>
        <groupId>com.googlesource.gerrit</groupId>
        <artifactId>gs-maven-wagon</artifactId>
        <version>3.3</version>
      </extension>
    </extensions>
  </build>
----


GERRIT
------
Part of link:index.html[Gerrit Code Review]

SEARCHBOX
---------
