Plugin Development

If you want to share your plugin under the
Apache License 2.0 you can host your plugin development on the
gerrit-review Gerrit
Server. You can request the creation of a new Project by email
to the Gerrit
mailing list. You would be assigned as project owner of the new plugin
project so that you can submit changes on your own. It is the
responsibility of the project owner to maintain the plugin, e.g. to
make sure that it works with new Gerrit versions and to create stable
branches for old releases.

Core Plugins

Core plugins are packaged within the Gerrit war file and can easily be
installed during the Gerrit initialization.

The core plugins are developed and maintained by the Gerrit maintainers
and the Gerrit community.

hooks

replication

This plugin can automatically push any changes Gerrit Code Review makes
to its managed Git repositories to another system. Usually this would
be configured to provide mirroring of changes, for warm-standby
backups, or a load-balanced public mirror farm.

reviewnotes

singleusergroup

This plugin provides a group per user. This is useful to assign access
rights directly to a single user, since in Gerrit access rights can
only be assigned to groups.

Other Plugins

Besides core plugins there are many other Gerrit plugins available.
These plugins are developed and maintained by different parties.
The Gerrit Project doesn’t guarantee proper functionality of any of
these plugins.

The Gerrit Project doesn’t provide binaries for these plugins, but
there is one public service that offers the download of pre-built
plugin jars:

The following list gives an overview of available plugins, but the
list may not be complete. You may discover more plugins on
gerrit-review.

admin-console

Plugin to provide administrator-only functionality, intended to
simplify common administrative tasks. Currently providing user-level
information. Also providing access control information by project or
project/account.

analytics

Plugin to extract commit and review data from Gerrit projects and
expose aggregated metrics over REST and SSH API.
Metrics are extracted in JSON format with one record per line, ready to be
archived and processed with popular BigData transformation tools such
Apache Spark or published and visualized in dashboards.

avatars-external

avatars-gravatar

branch-network

This plugin allows the rendering of Git repository branch network in a
graphical HTML5 Canvas. It is mainly intended to be used as a
"project link" in a gitweb configuration or by other Gerrit GWT UI
plugins to be plugged elsewhere in Gerrit.

github

gitiles

healthcheck

Plugin for monitoring and alerting when Gerrit does not behave properrly.

When Gerrit Server needs to be available 24x7, it is important to know
beforehand if something isn’t working correctly: this plugin exposes a
REST-API that provides the real-time status of the Gerrit internals and can
be integrated with real-time monitoring systems and paging platforms.

Healthcheck metrics (latency and subsystem healthiness) are published as
Gerrit internal metrics and can be published to dashboards.

imagare

importer

The importer plugin allows to import projects from one Gerrit server
into another Gerrit server.

Projects can be imported while both source and target Gerrit server
are online. There is no downtime required.

The git repository and all changes of the project, including approvals
and review comments, are imported. Historic timestamps are preserved.

Project imports can be resumed. This means a project team can continue
to work in the source system while the import to the target system is
done. By resuming the import the project in the target system can be
updated with the missing delta.

The importer plugin can also be used to copy a project within one Gerrit
server, and in combination with the delete-project
plugin it can be used to rename a project.

javamelody

labelui

The labelui plugin adds a user preference that allows users to choose a
table control to render the labels/approvals on the change screen
(similar to how labels/approvals were rendered on the old change
screen).

metrics-reporter-jmx

metrics-reporter-prometheus

motd

This plugin can output messages to clients when pulling/fetching/cloning
code from Gerrit Code Review. If the client (and transport mechanism)
can support sending the message to the client, it will be displayed to
the user (usually prefixed by “remote: ”), but will be silently
discarded otherwise.

owners

project-download-commands

This plugin adds support for project specific download commands.

Project specific download commands that are defined on a parent project
are inherited by the child projects. Child projects can overwrite the
inherited download command or remove it by assigning no value to it.

quota

This plugin allows to enforce quotas in Gerrit.

To protect a Gerrit installation it makes sense to limit the resources
that a project or group can consume. To do this a Gerrit administrator
can use this plugin to define quotas on project namespaces.

review-strategy

reviewers

reviewers-by-blame

A plugin that allows automatically adding reviewers to a change from
the git blame computation on the changed files. It will add the users
that authored most of the lines touched by the change, since these
users should be familiar with the code and can mostly review the
change.

server-config

This plugin enables access (download and upload) to the server config
files. It may be used to change Gerrit config files (like
etc/gerrit.config) in cases where direct access to the file system
where Gerrit’s config files are stored is difficult or impossible to
get.

serviceuser

This plugin allows to create service users in Gerrit.

A service user is a user that is used by another service to communicate
with Gerrit. E.g. a service user is needed to run the Gerrit Trigger
Plugin in Jenkins. A service user is not able to login into the Gerrit
WebUI and it cannot push commits or tags.

websession-flatfile

This plugin replaces the built-in Gerrit H2 based websession cache with
a flatfile based implementation. This implementation is shareable
among multiple Gerrit servers, making it useful for multi-master
Gerrit installations.