Merge branch 'stable-2.9'
* stable-2.9: Release docs: Describe in more details how to publish to Maven Central Document more details about the deploy configuration for Maven Central ChangeScreen2: Respect user preference for unified diff view Change-Id: I423c9ce62d3f33d2ecf6c0c8cd2e669c09693976
This commit is contained in:
@@ -3,13 +3,22 @@
|
|||||||
[[deploy-configuration-setting-maven-central]]
|
[[deploy-configuration-setting-maven-central]]
|
||||||
== Deploy Configuration settings for Maven Central
|
== Deploy Configuration settings for Maven Central
|
||||||
|
|
||||||
Gerrit Extension API Jar and the Gerrit Plugin API artifacts are stored on
|
Some Gerrit artifacts (e.g. the Gerrit WAR file, the Gerrit Plugin API
|
||||||
Maven Central.
|
and the Gerrit Extension API) are published on Maven Central in the
|
||||||
|
`com.google.gerrit` repository.
|
||||||
|
|
||||||
Prerequisites: Set up the Sonatype account (see link:https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide#SonatypeOSSMavenRepositoryUsageGuide-2.Signup[Sonatype
|
To be able to publish artifacts to Maven Central some preparations must
|
||||||
Maven Repository Usage Guide]) and put Sonatype user and password in
|
be done:
|
||||||
~/.m2/settings.xml:
|
|
||||||
|
|
||||||
|
* 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>
|
<server>
|
||||||
<id>sonatype-nexus-staging</id>
|
<id>sonatype-nexus-staging</id>
|
||||||
@@ -18,11 +27,30 @@ Maven Repository Usage Guide]) and put Sonatype user and password in
|
|||||||
</server>
|
</server>
|
||||||
----
|
----
|
||||||
|
|
||||||
PGP key must be generated and published, see
|
* Request permissions to upload artifacts to the `com.google.gerrit`
|
||||||
link:https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven[How
|
repository on Maven Central:
|
||||||
To Generate PGP Signatures With Maven] for details. PGP passphrase can also be
|
+
|
||||||
put in ~/.m2/settings.xml:
|
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>
|
<settings>
|
||||||
<profiles>
|
<profiles>
|
||||||
@@ -39,9 +67,12 @@ put in ~/.m2/settings.xml:
|
|||||||
</activeProfiles>
|
</activeProfiles>
|
||||||
</settings>
|
</settings>
|
||||||
----
|
----
|
||||||
|
+
|
||||||
It can also be included in the key chain on OS X.
|
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
|
Gerrit Subproject Artifacts are stored on
|
||||||
link:https://developers.google.com/storage/[Google Cloud Storage].
|
link:https://developers.google.com/storage/[Google Cloud Storage].
|
||||||
Via the link:https://code.google.com/apis/console/?noredirect[API Console] the
|
Via the link:https://code.google.com/apis/console/?noredirect[API Console] the
|
||||||
@@ -57,9 +88,6 @@ Jar.
|
|||||||
+
|
+
|
||||||
Bucket to store Gerrit Subproject Artifacts (e.g. `gwtjsonrpc` etc.).
|
Bucket to store Gerrit Subproject Artifacts (e.g. `gwtjsonrpc` etc.).
|
||||||
|
|
||||||
[[deploy-configuration-settings-xml]]
|
|
||||||
== Deploy Configuration in Maven `settings.xml`
|
|
||||||
|
|
||||||
To upload artifacts to a bucket the user must authenticate with a
|
To upload artifacts to a bucket the user must authenticate with a
|
||||||
username and password. The username and password need to be retrieved
|
username and password. The username and password need to be retrieved
|
||||||
from the link:https://code.google.com/apis/console/?noredirect[API Console]:
|
from the link:https://code.google.com/apis/console/?noredirect[API Console]:
|
||||||
|
|||||||
@@ -164,31 +164,121 @@ Commit the changes and create the release tag on the new commit:
|
|||||||
** make sure you are signed in with your Gmail account
|
** make sure you are signed in with your Gmail account
|
||||||
** manually upload the Gerrit WAR file by using the `Upload` button
|
** manually upload the Gerrit WAR file by using the `Upload` button
|
||||||
|
|
||||||
|
[[publish-to-maven-central]]
|
||||||
|
==== Publish the Gerrit artifacts to Maven Central
|
||||||
|
|
||||||
|
* Make sure you have done the
|
||||||
|
link:dev-release-deploy-config.html#deploy-configuration-setting-maven-central[
|
||||||
|
configuration] for deploying to Maven Central
|
||||||
|
|
||||||
|
* Make sure that the version is updated in the `VERSION` file and in
|
||||||
|
the `pom.xml` files as described in the link:#update-versions[Update
|
||||||
|
Versions and Create Release Tag] section.
|
||||||
|
|
||||||
* Push the WAR to Maven Central:
|
* Push the WAR to Maven Central:
|
||||||
+
|
+
|
||||||
----
|
----
|
||||||
buck build war_deploy
|
buck build war_deploy
|
||||||
----
|
----
|
||||||
|
|
||||||
[[extension-and-plugin-api]]
|
* Push the plugin artifacts to Maven Central:
|
||||||
==== Publish the Extension and Plugin API Jars
|
|
||||||
|
|
||||||
* Make sure you have done the
|
|
||||||
link:dev-release-deploy-config.html#deploy-configuration-setting-maven-central[
|
|
||||||
configuration needed for deployment]
|
|
||||||
|
|
||||||
* Push the Jars to Maven Central:
|
|
||||||
+
|
+
|
||||||
----
|
----
|
||||||
buck build api_deploy
|
buck build api_deploy
|
||||||
----
|
----
|
||||||
|
+
|
||||||
* Troubleshooting: to see the commands that are execured in Buck build process
|
For troubleshooting, the environment variable `VERBOSE` can be set. This
|
||||||
environment variable VERBOSE can be set:
|
prints out the commands that are executed by the Buck build process:
|
||||||
+
|
+
|
||||||
----
|
----
|
||||||
VERBOSE=1 buck build api_deploy
|
VERBOSE=1 buck build api_deploy
|
||||||
----
|
----
|
||||||
|
+
|
||||||
|
If no artifacts are uploaded, clean the `buck-out` folder and retry:
|
||||||
|
+
|
||||||
|
----
|
||||||
|
rm -rf buck-out
|
||||||
|
----
|
||||||
|
|
||||||
|
* Push the plugin Maven archetypes to Maven Central:
|
||||||
|
+
|
||||||
|
----
|
||||||
|
./tools/plugin_archetype_deploy.sh
|
||||||
|
----
|
||||||
|
|
||||||
|
* To where the artifacts are uploaded depends on the `GERRIT_VERSION` in
|
||||||
|
the `VERSION` file:
|
||||||
|
|
||||||
|
** SNAPSHOT versions are directly uploaded into the Sonatype snapshots
|
||||||
|
repository and no further action is needed:
|
||||||
|
+
|
||||||
|
https://oss.sonatype.org/content/repositories/snapshots/com/google/gerrit/
|
||||||
|
|
||||||
|
** Release versions are uploaded into a staging repository in the
|
||||||
|
link:https://oss.sonatype.org/[Sonatype Nexus Server].
|
||||||
|
|
||||||
|
* Verify the staging repository
|
||||||
|
+
|
||||||
|
How to do this is described in the
|
||||||
|
link:https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide#SonatypeOSSMavenRepositoryUsageGuide-8.a.1.ClosingaStagingRepository[
|
||||||
|
Sonatype OSS Maven Repository Usage Guide].
|
||||||
|
|
||||||
|
** Go to the link:https://oss.sonatype.org/[Sonatype Nexus Server] and
|
||||||
|
sign in with your Sonatype credentials.
|
||||||
|
|
||||||
|
** Click in the left navigation bar under `Build Promotion` on
|
||||||
|
`Staging Repositories` and find the `comgooglegerrit-XXXX` staging
|
||||||
|
repository.
|
||||||
|
|
||||||
|
** Verify its content
|
||||||
|
+
|
||||||
|
While the staging repository is open you can upload further content and
|
||||||
|
also replace uploaded artifacts. If something is wrong with the staging
|
||||||
|
repository you can drop it by selecting it and clicking on `Drop`.
|
||||||
|
|
||||||
|
** Run Sonatype validations on the staging repository
|
||||||
|
+
|
||||||
|
Select the staging repository and click on `Close`. This runs the
|
||||||
|
Sonatype validations on the staging repository. The repository will
|
||||||
|
only be closed if everything is OK. A closed repository cannot be
|
||||||
|
modified anymore, but you may still drop it if you find any issues.
|
||||||
|
|
||||||
|
** Test closed staging repository
|
||||||
|
+
|
||||||
|
Once a repository is closed you can find the URL to it in the `Summary`
|
||||||
|
section, e.g. https://oss.sonatype.org/content/repositories/comgooglegerrit-1029
|
||||||
|
+
|
||||||
|
Use this URL for further testing of the artifacts in this repository,
|
||||||
|
e.g. to try building a plugin against the plugin API in this repository
|
||||||
|
update the version in the `pom.xml` and configure the repository:
|
||||||
|
+
|
||||||
|
----
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>gerrit-staging-repository</id>
|
||||||
|
<url>https://oss.sonatype.org/content/repositories/comgooglegerrit-1029</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
----
|
||||||
|
|
||||||
|
* Release the staging repository
|
||||||
|
+
|
||||||
|
How to release a staging repository is described in the
|
||||||
|
link:https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide#SonatypeOSSMavenRepositoryUsageGuide-8.a.2.ReleasingaStagingRepository[
|
||||||
|
Sonatype OSS Maven Repository Usage Guide].
|
||||||
|
+
|
||||||
|
[WARNING]
|
||||||
|
Releasing artifacts to Maven Central cannot be undone!
|
||||||
|
|
||||||
|
** Find the closed staging repository in the
|
||||||
|
link:https://oss.sonatype.org/[Sonatype Nexus Server], select it and
|
||||||
|
click on `Release`.
|
||||||
|
|
||||||
|
** It may take up to 2 hours until the artifacts appear on Maven
|
||||||
|
Central:
|
||||||
|
+
|
||||||
|
https://oss.sonatype.org/content/repositories/releases/com/google/gerrit/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[[push-stable]]
|
[[push-stable]]
|
||||||
@@ -319,17 +409,6 @@ included in the next Gerrit release. Update the Gerrit version in the
|
|||||||
for review and get it merged.
|
for review and get it merged.
|
||||||
|
|
||||||
|
|
||||||
[[publish-plugins-archetypes-to-maven-central]]
|
|
||||||
=== Publish plugin archetypes to Maven Central
|
|
||||||
|
|
||||||
Make sure you have done the
|
|
||||||
link:dev-release-deploy-config.html#deploy-configuration-setting-maven-central[
|
|
||||||
configuration needed for deployment]
|
|
||||||
|
|
||||||
----
|
|
||||||
./tools/plugin_archetype_deploy.sh
|
|
||||||
----
|
|
||||||
|
|
||||||
[[merge-stable]]
|
[[merge-stable]]
|
||||||
=== Merge `stable` into `master`
|
=== Merge `stable` into `master`
|
||||||
|
|
||||||
|
|||||||
@@ -673,6 +673,12 @@ public class Dispatcher {
|
|||||||
|
|
||||||
if ("".equals(panel)) {
|
if ("".equals(panel)) {
|
||||||
if (isChangeScreen2()) {
|
if (isChangeScreen2()) {
|
||||||
|
if (Gerrit.isSignedIn()
|
||||||
|
&& DiffView.UNIFIED_DIFF.equals(Gerrit.getUserAccount()
|
||||||
|
.getGeneralPreferences().getDiffView())) {
|
||||||
|
return new PatchScreen.Unified(id, patchIndex, patchSetDetail,
|
||||||
|
patchTable, top, baseId);
|
||||||
|
}
|
||||||
return new SideBySide2(baseId, id.getParentKey(), id.get(),
|
return new SideBySide2(baseId, id.getParentKey(), id.get(),
|
||||||
side, line);
|
side, line);
|
||||||
}
|
}
|
||||||
@@ -693,8 +699,7 @@ public class Dispatcher {
|
|||||||
top, //
|
top, //
|
||||||
baseId //
|
baseId //
|
||||||
);
|
);
|
||||||
} else if (("cm".equals(panel) && Gerrit.getConfig().getNewFeatures())
|
} else if ("cm".equals(panel) && Gerrit.getConfig().getNewFeatures()) {
|
||||||
|| ("".equals(panel) && isChangeScreen2())) {
|
|
||||||
if (Gerrit.isSignedIn()
|
if (Gerrit.isSignedIn()
|
||||||
&& DiffView.UNIFIED_DIFF.equals(Gerrit.getUserAccount()
|
&& DiffView.UNIFIED_DIFF.equals(Gerrit.getUserAccount()
|
||||||
.getGeneralPreferences().getDiffView())) {
|
.getGeneralPreferences().getDiffView())) {
|
||||||
|
|||||||
Reference in New Issue
Block a user