Making a Release of a Gerrit Subproject / Core Plugin
=====================================================

Preparing a New Snapshot for Publishing
---------------------------------------

* 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</id>
      <name>gerrit Maven Repository</name>
      <url>s3://gerrit-maven@commondatastorage.googleapis.com</url>
      <uniqueVersion>true</uniqueVersion>
    </repository>
  </distributionManagement>
----


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

----
  <build>
    <extensions>
      <extension>
        <groupId>net.anzix.aws</groupId>
        <artifactId>s3-maven-wagon</artifactId>
        <version>3.2</version>
      </extension>
    </extensions>
  </build>
----


* Add your username and password to your `~/.m2/settings.xml` file.
  These need to come from the link:https://code.google.com/apis/console/[API Console].

----
  <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-maven</id>
        <username>GOOG..EXAMPLE.....EXAMPLE</username>
        <password>EXAMPLE..EXAMPLE..EXAMPLE</password>
      </server>
    </servers>
  </settings>
----


Making a Snapshot
-----------------

* Only for plugins: in the `pom.xml` update the Gerrit version under
`properties` > `Gerrit-ApiVersion` to the version of the new Gerrit
release
* First build and deploy the latest snapshot and ensure that Gerrit
builds/runs with this snapshot

* Deploy the snapshot:

====
  mvn deploy
====


Making a Release
----------------

* First deploy (and test) the latest snapshot for the subproject/plugin

* Update the top level `pom.xml` in the subproject/plugin to reflect
the new project version (the exact value of the tag you will create
below)

* Commit the pom change and push to the project's repo
`refs/for/<master/stable>`

* Tag the version you just pushed (and push the tag)

====
 git tag -a -m "prolog-cafe 1.3" v1.3
 git push gerrit-review refs/tags/v1.3:refs/tags/v1.3
====

* Deploy the new release:

====
 mvn deploy
====


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