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

[[make-snapshot]]
Make 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.
** Make sure that the URL for the Maven repository with the id
`gerrit-api-repository` in the `pom.xml` is correct.
+
If `Gerrit-ApiVersion` references a released Gerrit version it must be
`https://gerrit-api.stoarge.googleapis.com/release/`, if
`Gerrit-ApiVersion` references a snapshot Gerrit version it must be
`https://gerrit-api.storage.googleapis.com/snapshot/`.

* Build the latest snapshot and install it into the local Maven
repository:
+
====
  mvn clean install
====

* Test Gerrit with this snapshot locally


Publish Snapshot
----------------

If a Snapshot for a Subproject was created that should be referenced by
Gerrit while current Gerrit development is ongoing, this Snapshot needs
to be published.

* Make sure you have done the configuration needed for deployment:
** link:dev-release-deploy-config.html#deploy-configuration-settings-xml[
Configuration in Maven `settings.xml`]
** link:dev-release-deploy-config.html#deploy-configuration-subprojects[
Configuration for Subprojects in `pom.xml`]

* Deploy the new snapshot:
+
====
  mvn deploy
====

* Change the version in the Gerrit parent `pom.xml` for the Subproject
to the `SNAPSHOT` version
+
When Gerrit gets released, a release of the Subproject has to be done
and Gerrit has to reference the released Subproject version.


[[prepare-release]]
Prepare the Release
-------------------

* link:#make-snapshot[First create (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)

* Create the Release Tag
+
====
 git tag -a -m "prolog-cafe 1.3" v1.3
====

* Build and install into local Maven repository:
+
====
  mvn clean install
====


[[publish-release]]
Publish the Release
-------------------

* Make sure you have done the configuration needed for deployment:
** link:dev-release-deploy-config.html#deploy-configuration-settings-xml[
Configuration in Maven `settings.xml`]
** Configuration in `pom.xml` for
link:dev-release-deploy-config.html#deploy-configuration-subprojects[Subprojects] or
link:dev-release-deploy-config.html#deploy-configuration-core-plugins[Core Plugins]

* Deploy the new release:
+
====
  mvn deploy
====

* Push the pom change(s) to the project's repository
`refs/for/<master|stable>`

* Push the Release Tag
+
====
  git push gerrit-review refs/tags/v1.3:refs/tags/v1.3
====


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