# Build

The @PLUGIN@ plugin can be built in-tree in Gerrit's `/plugins` path.

The `plugins/external_plugin_deps.bzl` file will need to be updated to match
or contain `@PLUGIN@/external_plugin_deps.bzl`.

```
git clone --recursive https://gerrit.googlesource.com/gerrit
cd gerrit
git clone "https://gerrit.googlesource.com/plugins/@PLUGIN@" plugins/@PLUGIN@
ln -sf plugins/@PLUGIN@/external_plugin_deps.bzl plugins/.
bazelisk build plugins/@PLUGIN@
```

The output is created in

```
gerrit/bazel-bin/plugins/@PLUGIN@/@PLUGIN@.jar
```

## Eclipse project setup

This project can be imported into the Eclipse IDE:

- Add the plugin name to the `CUSTOM_PLUGINS_TEST_DEPS`
set in Gerrit core in `tools/bzl/plugins.bzl`,
- execute:

```
./tools/eclipse/project.py
```

## Run tests

To execute the tests run

```
bazelisk test --test_tag_filters=@PLUGIN@ //...
```
or
```
bazelisk test //plugins/@PLUGIN@/...
```

On MacOS you may need to access the docker daemon via TCP.

Run [socat](https://linux.die.net/man/1/socat) to expose the docker daemon socket via TCP

```
socat TCP-LISTEN:2375,fork UNIX-CONNECT:/var/run/docker.sock
```

Execute the tests over TCP

```
bazelisk test --test_env='DOCKER_HOST=tcp://127.0.0.1:2375' //plugins/@PLUGIN@/...
```

### Debugging tests

```
bazelisk test --test_output=streamed //plugins/@PLUGIN@/...
```

If necessary increase log levels in `src/test/resources/log4j.properties`
to trace testcontainers and docker java API.

### Tracing traffic to docker daemon

If you face issue you can trace traffic to the docker daemon using
[socat](https://linux.die.net/man/1/socat) exposing the docker daemon via TCP.

Run socat to log diagnostics and show the traffic to the docker daemon

```
socat -dd -v TCP-LISTEN:2375,fork UNIX-CONNECT:/var/run/docker.sock
```

Execute the tests over TCP

```
bazelisk test --test_env='DOCKER_HOST=tcp://127.0.0.1:2375' //plugins/@PLUGIN@/...
```

[Back to @PLUGIN@ documentation index][index]

[index]: index.html
