Description
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. By default, all packaged plugins will be installed when Gerrit is deployed in a servlet container and the location of the Gerrit distribution can be determined at runtime. It is also possible to install only a subset of packaged plugins or not install any plugin.
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.
Warning
|
Defining the jdbc/ReviewDb JNDI property for an H2 database under the
path defined by either gerrit.site_path or gerrit.init_path will
cause an incomplete auto initialization and Gerrit will fail to start.
Opening a connection to such database will create a subfolder under the
site path folder (in order to create the H2 database) and Gerrit will
not any more consider that site path to be new and, because of that,
skip some required initialization steps (for example, Lucene index
creation). In order to auto initialize Gerrit with an embedded H2
database use the gerrit.site_path to define the location of the review
site and don’t define a JNDI resource with a URL under that path.
|
If the gerrit.install_plugins property is not defined then all packaged plugins will be installed. If it is defined then it is parsed as a comma separated list of plugin names to install. If the value is an empty string then no plugin will be installed.
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' $ catalina.sh 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' $ catalina.sh 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' $ catalina.sh start
Part of Gerrit Code Review