commit | 9dae89cacfbb8dabc1ada51b854045c85082b6dc | [log] [tgz] |
---|---|---|
author | Thomas Draebing <thomas.draebing@sap.com> | Tue Jan 08 14:21:17 2019 +0100 |
committer | Matthias Sohn <matthias.sohn@sap.com> | Wed Feb 20 15:35:39 2019 +0100 |
tree | b383b89b84a99db7019bc8f79ac3d1c04543d66e | |
parent | 0f42a464712514e4ea2d83f368f36e083b572216 [diff] |
Add structure test for base-container So far the containers created in this project weren't tested automatically. This change adds structure tests for the base-container making a start in the effort of implementing automated tests. The python package 'pytest' is used to run the test and is meant to provide a framework to implement additional tests as well. Pipenv is used to ensure a consistent test environment. Change-Id: I04b1bdbc5b6360402b5a629c264c5c5c882f773f
Container images, configurations and Helm charts for installing Gerrit on Kubernetes.
Images to run a Gerrit master and slave setup based on the latest stable-2.12 Gerrit build.
To build all images, the build
-script in the root directory of the project can be used:
./build
If a specific image should be build, the image name can be specified as an argument. Multiple images can be specified at once:
./build gerrit-slave git-gc
The build-script usually uses the latest
-tag to tag the images. By using the --tag TAG
-option, a custom tag can be defined:
./build --tag test
The build script will in addition tag the image with the output of git describe --dirty
.
The single component images inherit a base image. The Dockerfile
for the base image can be found in the ./base
-directory. It will be automatically built by the ./build
-script. If the component images are built manually, the base image has to be built first with the target base:latest
, since it is not available in a registry and thus has to exist locally.
The publish script in the root directory of the project can be used to push the built images to the configured registry. To do so, log in first, before executing the script.
docker login <registry>
To configure the registry and image version, the respective values can be configured via env variables REGISTRY
and TAG
. In addition, these values can also be passed as command line options named --registry
and --tag
in which case they override the values from env variables:
./publish <component-name>
The <component-name>
is one of: apache-git-http-backend
, git-gc
, gerrit-slave
.
Adding the --update-latest
-flag will also update the images tagged latest
in the repository:
./publish --update-latest <component-name>
The container images are meant to be used by the helm-charts provided in this project. The images are thus not designed to be used in a standalone setup. To run Gerrit on Docker use the docker-gerrit project.
Currently, java is installed under /usr/lib/jvm/java-8-openjdk-amd64/jre
. Therefore, make sure that container.javaHome
is set to that path in the gerrit.config
:
javaHome = /usr/lib/jvm/java-8-openjdk-amd64/jre
The mysql-replication-init docker image is only required for setting up the Gerrit slave on Kubernetes. If deploying the Gerrit slave outside of Kubernetes, it can be ignored.
These Helm charts can be used to install a Gerrit cluster consisting of a Gerrit master and a Gerrit slave on a Kubernetes cluster.
To evaluate and test the helm-charts, they can be installed on a local machine running Minikube. Follow this guide to get a detailed description how to set up the Minikube cluster and install the charts.
Currently this deployment uses NFS, some options:
The tests are implemented using Python and pytest
. To ensure a well-defined test-environment, pipenv
is meant to be used to install packages and provide a virtual environment in which to run the tests. To install pipenv, use brew
:
brew install pipenv
More detailed information can be found in the pipenv GitHub repo.
To create the virtual environment with all required packages, run:
pipenv install
To run all tests, execute:
pipenv run pytest
To run specific tests, execute one of the following:
# Run all tests in a directory (including subdirectories) pipenv run pytest tests/container-images/base # Run all tests in a file pipenv run pytest tests/container-images/base/test_container_build_base.py # Run a specific test pipenv run \ pytest tests/container-images/base/test_container_build_base.py::test_build_base
For a more detailed description of how to use pytest
, refer to the official documentation.