|  | :linkattrs: | 
|  | = 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 an account on | 
|  | link:https://issues.sonatype.org/secure/Signup!default.jspa[Sonatype's Jira,role=external,window=_blank]. | 
|  | + | 
|  | Sonatype is the company that runs Maven Central and you need a Sonatype | 
|  | account to be able to upload 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,role=external,window=_blank] 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 | 
|  | + | 
|  | A PGP key is needed to be able to sign the release artifacts before | 
|  | the upload to Maven Central, and to sign the release announcement email. | 
|  | + | 
|  | Generate and publish a PGP key as described in | 
|  | link:http://central.sonatype.org/pages/working-with-pgp-signatures.html[ | 
|  | Working with PGP Signatures,role=external,window=_blank]. In addition to the keyserver mentioned | 
|  | there it is recommended to also publish the key to the | 
|  | link:https://keyserver.ubuntu.com/[Ubuntu key server]. | 
|  | + | 
|  | Please be aware that after publishing your public key it may take a | 
|  | while until it is visible to the Sonatype server. | 
|  | + | 
|  | Add an entry for the public key in the | 
|  | link:https://gerrit.googlesource.com/homepage/+/md-pages/releases/public-keys.md[key list,role=external,window=_blank] | 
|  | on the homepage. | 
|  | + | 
|  | 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://console.developers.google.com/project/164060093628[Developers Console,role=external,window=_blank] 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. Prolog Cafe). | 
|  |  | 
|  | 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://console.cloud.google.com/storage/settings?project=api-project-164060093628[ | 
|  | Storage Setting in the Google Cloud Platform Console,role=external,window=_blank]: | 
|  |  | 
|  | Select the `Interoperability` tab, and if no keys are listed under | 
|  | `Interoperable storage access keys`, select 'Create a new key'. | 
|  |  | 
|  | Using `Access Key` as username and `Secret` as the password, add the | 
|  | configuration in the `~/.m2/settings.xml` file to make the credentials | 
|  | known to Maven: | 
|  |  | 
|  | ---- | 
|  | <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> | 
|  | ---- | 
|  |  | 
|  | [NOTE] | 
|  | In case of JGit the `pom.xml` already contains a `distributionManagement` | 
|  | section.  To deploy the artifacts to the `gerrit-maven` repository, replace | 
|  | the existing `distributionManagement` section with this snippet. | 
|  |  | 
|  | * Add these two snippets to the `pom.xml` to enable the wagon provider: | 
|  |  | 
|  | ---- | 
|  | <pluginRepositories> | 
|  | <pluginRepository> | 
|  | <id>gerrit-maven</id> | 
|  | <url>https://gerrit-maven.commondatastorage.googleapis.com</url> | 
|  | </pluginRepository> | 
|  | </pluginRepositories> | 
|  | ---- | 
|  |  | 
|  | ---- | 
|  | <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 | 
|  | --------- |