| Build |
| ===== |
| |
| This plugin can be built with Bazel in the Gerrit source tree. |
| |
| Clone or link this plugin into the `plugins` directory of the Gerrit |
| source tree. Then link the plugin's module fragment into Gerrit's |
| `plugins` directory, replacing the placeholder file. This fragment |
| exposes the plugin's Bazel module and its external dependencies to |
| the Gerrit root module when building in-tree. |
| |
| ``` |
| cd gerrit/plugins |
| rm external_plugin_deps.MODULE.bazel |
| ln -s @PLUGIN@/external_plugin_deps.MODULE.bazel . |
| ``` |
| |
| From the Gerrit source tree run: |
| |
| ``` |
| bazel build plugins/@PLUGIN@ |
| ``` |
| |
| The output is created in: |
| |
| ``` |
| bazel-bin/plugins/@PLUGIN@/@PLUGIN@.jar |
| ``` |
| |
| To execute the tests run either of: |
| |
| ``` |
| bazel test plugins/@PLUGIN@/... |
| bazel test --test_tag_filters=@PLUGIN@ //... |
| bazel test plugins/@PLUGIN@:@PLUGIN@_tests |
| ``` |
| |
| This project can also be imported into the Eclipse IDE. |
| |
| Add the plugin name to the `CUSTOM_PLUGINS` and |
| `CUSTOM_PLUGINS_TEST_DEPS` sets in Gerrit core in |
| `tools/bzl/plugins.bzl`, and execute: |
| |
| ``` |
| ./tools/eclipse/project.py |
| ``` |
| |
| ### Packaged runtime JAR allowlist test |
| |
| This plugin tracks the set of third-party runtime JARs that are bundled into the plugin JAR. |
| A deterministic, version-agnostic manifest is generated from the plugin’s runtime classpath and |
| compared against the checked-in allowlist: |
| |
| `high-availability_third_party_runtime_jars.allowlist.txt` |
| |
| This acts as a guardrail to detect unintended changes to the packaged runtime dependency set. |
| |
| To run the check in Gerrit tree: |
| |
| ```bash |
| bazel test plugins/@PLUGIN@:check_high-availability_third_party_runtime_jars |
| ``` |
| |
| #### Updating the allowlist |
| |
| If the test fails because the packaged third-party JAR set changed, the plugin’s bundled runtime |
| dependencies have changed. |
| |
| If the change is expected and has been reviewed, refresh the allowlist: |
| |
| ```bash |
| bazel build plugins/@PLUGIN@:check_high-availability_third_party_runtime_jars_manifest |
| cp bazel-bin/plugins/@PLUGIN@/check_high-availability_third_party_runtime_jars_manifest.txt \ |
| plugins/@PLUGIN@/high-availability_third_party_runtime_jars.allowlist.txt |
| ``` |
| |
| Commit the updated allowlist along with the dependency change. |
| |
| ### Gerrit-tree-only plugin checks |
| |
| This plugin contains additional guardrail tests that are meaningful only |
| when it is built inside the Gerrit source tree (e.g. checks comparing the |
| plugin’s packaged runtime jars against Gerrit’s own runtime classpath). |
| |
| Then execute: |
| |
| ```bash |
| bazel test plugins/@PLUGIN@:high-availability_no_overlap_with_gerrit |
| ``` |
| |
| How to build the Gerrit Plugin API is described in the |
| [Gerrit documentation](../../../Documentation/dev-bazel.html#_extension_and_plugin_api_jar_files). |
| |
| [Back to @PLUGIN@ documentation index][index] |
| |
| [index]: index.html |