This folder contains all Docker related artifacts.
A list of all Dockerfiles used by the build server can be found in the Jenkinsfile.
Note: Any commands in this file are expected to be run from the root of the repository.
You can download prebuilt images for local testing from our build environment.
List available images via docker run --rm anoxis/registry-cli -r https://hub-public.libelektra.org
.
Afterwards pull your desired image as you would do from any public registry:
docker pull hub-public.libelektra.org/build-elektra-alpine:201809-791f9f388cbdff0db544e02277c882ad6e8220fe280cda67e6ea6358767a065e
.
Note: We use hub-public instead of hub.libelektra.org which is in use by our build server to bypass authentication. Only GET requests are allowed on hub-public.
You can build images locally via the following command, if you use bash
, sh
or zsh
:
docker build -t buildelektra-stretch-full \
--build-arg JENKINS_USERID=`id -u` \
--build-arg JENKINS_GROUPID=`id -g` \
-f scripts/docker/debian/stretch/Dockerfile \
scripts/docker/debian/stretch/
or:
docker build -t buildelektra-stretch-full \
--build-arg JENKINS_USERID=(id -u) \
--build-arg JENKINS_GROUPID=(id -g) \
-f scripts/docker/debian/stretch/Dockerfile \
scripts/docker/debian/stretch/
, if you use fish
.
You can adapt the targeted Dockerfile via -f
.
You should also adjust the tag used via -t
if you are building a different
image.
Please note that the complete images used to test Elektra are quite big (~3.7GB) and take a some time (15min+) to build.
To replicate errors on the test server you can build the image that ran the test as shown above.
Afterwards you can start the container via the following command:
docker run -it --rm \
-v "$PWD:/home/jenkins/workspace" \
-w /home/jenkins/workspace \
buildelektra-stretch-full
Note since we used matching userid + groupid to your current user the container will write to your mounted directory with the correct permissions.
Once you are running inside the container you can use the same commands as you would use normally to configure/compile and test Elektra. There is also some information on how the build server uses the Docker images as well as the actual instructions executed by the build server in our Jenkinsfiles.
If you enable the leak sanitizer using the option ENABLE_ASAN
the build might fail printing the following error message:
LeakSanitizer has encountered a fatal error. … HINT: LeakSanitizer does not work under ptrace
. To fix that problem please add the option --cap-add SYS_PTRACE
to the docker run
command.
The build server does not create a bash shell inside the containers.
Instead it runs a nonterminating command (usually cat
) to keep the container
open.
Afterwards it executes each step via docker exec
.
There might be some more differences that might influence test outcomes. One such documented case is #2008 and #1973 where errors on the test server could not be replicated when running identical commands locally.