:linkattrs:
= Making a Release of a Gerrit Subproject

[[make-snapshot]]
== Make a 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 of the subproject in either `tools/deps.toml` or
`tools/nongoogle.toml` 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]

* Update the top level `pom.xml` in the subproject 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]

* Deploy the new release:
+
----
  mvn deploy -DperformRelease=true
----

* 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]

SEARCHBOX
---------
