Gerrit supports automatic site initialization on server startup when Gerrit runs in a servlet container. Both creation of a new site and upgrade of an existing site are supported. Installation of plugins during the site creation/initialization is not yet supported.

This feature may be useful for such setups where Gerrit administrators don’t have direct access to the database and the file system of the server where Gerrit should be deployed and, therefore, cannot perform the init from their local machine prior to deploying Gerrit on such a server. It may also make deployment and testing in a local servlet container faster to setup as the init step could be skipped.

Gerrit Configuration

The site initialization will be performed only if the gerrit.init system property exists (the value of the property is not used, only the existence of the property matters).

If the gerrit.site_path system property is defined then the init is run for that site. The database connectivity, in that case, is defined in the etc/gerrit.config.

If gerrit.site_path is not defined then Gerrit will try to find an existing site by looking into the system_config table in the database defined via the jdbc/ReviewDb JNDI property. If the system_config table exists then the site_path from that table is used for the initialization. The database connectivity is defined by the jdbc/ReviewDb JNDI property.

Finally, if neither the gerrit.site_path property nor the system_config table exists, the gerrit.init_path system property, if defined, will be used to determine the site path. The database connectivity, also for this case, is defined by the jdbc/ReviewDb JNDI property.

Example 1

Prepare Tomcat so that a site is initialized at a given path using the H2 database (if the site doesn’t exist yet) or using whatever database is defined in etc/gerrit.config of that site:

  $ export CATALINA_OPTS='-Dgerrit.init -Dgerrit.site_path=/path/to/site'
  $ start

Example 2

Prepare Tomcat so that an existing site with the path defined in the system_config table is initialized (upgraded) on Gerrit startup. The assumption is that the jdbc/ReviewDb JNDI property is defined in Tomcat:

  $ export CATALINA_OPTS='-Dgerrit.init'
  $ start

Example 3

Assuming the database schema doesn’t exist in the database defined via the jdbc/ReviewDb JNDI property, initialize a new site using that database and a given path:

  $ export CATALINA_OPTS='-Dgerrit.init -Dgerrit.init_path=/path/to/site'
  $ start