| :linkattrs: | |
| = Deploy Gerrit Artifacts | |
| [[create-maven-central-credentials]] | |
| == Create Maven Central credentials | |
| 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 by following instructions at | |
| link:https://central.sonatype.org/register/central-portal/#create-an-account[Maven | |
| Central Portal,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. | |
| + | |
| Once you login you must generate a new user token that allows you to make | |
| requests via the publisher API. | |
| You can follow instructions link:https://central.sonatype.org/publish/generate-portal-token/[here] | |
| on how to do this. | |
| + | |
| Take note of this user and token. You will need to use them when running the release | |
| pipeline as described in the link:dev-release.html#gerrit-release-job[relevant documentation]. | |
| + | |
| * Request permissions to upload artifacts to the `com.google.gerrit` | |
| repository on Maven Central: | |
| + | |
| To acquire permission to upload artifacts to the `com.google.gerrit` repository on Maven Central | |
| You must follow instructions | |
| link:https://central.sonatype.org/faq/what-happened-to-issues-sonatype-org/#i-used-to-registerupdate-my-ossrh-account-at-issuessonatypeorg-what-do-i-do-now[here]. | |
| + | |
| The request needs to be approved by someone who already has this | |
| permission by commenting on the same issue. | |
| [[generate-and-publish-gpg-key]] | |
| * 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]. | |
| + | |
| 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/+/master/pages/site/releases/public-keys.md[key list,role=external,window=_blank] | |
| on the homepage. | |
| + | |
| The GPG private key and your passphrase will be required when running the release | |
| pipeline as described in the link:dev-release.html#gerrit-release-job[relevant documentation]. | |
| [[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 | |
| --------- |