Jenkins on docker not finding xml pytest report

Viewed 12

I have rootless docker host, jenkins on docker and a fastapi app inside a container as well.

Jenkins dockerfile:

FROM jenkins/jenkins:lts-jdk11
USER root
RUN apt-get update && \
    apt-get -y install apt-transport-https \
      ca-certificates \
      curl \
      gnupg2 \
      software-properties-common && \
    curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \
    add-apt-repository \
      "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
      $(lsb_release -cs) \
      stable" && \
   apt-get update && \
   apt-get -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin

This is the docker run command:

docker run -d --name jenkins-docker --restart=on-failure -v jenkins_home:/var/jenkins_home -v /run/user/1000/docker.sock:/var/run/docker.sock -p 8080:8080 -p 5000:5000 jenkins-docker-image

Where -v /run/user/1000/docker.sock:/var/run/docker.sock is used so jenkins-docker can use the host's docker engine.

Then, for the tests I have a docker compose file:

services:

  app:
    volumes:
      - /home/jap/.local/share/docker/volumes/jenkins_home/_data/workspace/vlep-pipeline_main/test-result:/usr/src
    depends_on:
      - testdb
    ...

  testdb:
    image: postgres:14-alpine
    ...

volumes:
  test-result:

Here I am using the volume create on the host when I ran the jenkins-docker-image. After running jenkins 'test' stage I can see that a report.xml file was created inside the host and jenkins-docker volumes.

Inside jenkins-docker
root@89b37f219be1:/var/jenkins_home/workspace/vlep-pipeline_main/test-result# ls
report.xml

Inside host
jap@jap:~/.local/share/docker/volumes/jenkins_home/_data/workspace/vlep-pipeline_main/test-result $ ls
report.xml

I then have the following steps on my jenkinsfile:

steps {
        sh 'docker compose -p testing -f docker/testing.yml up -d'
        junit "/var/jenkins_home/workspace/vlep-pipeline_main/test-result/report.xml"
      }

I also tried using the host path for the junit step, but either way I get on jenkins logs:

Recording test results
No test report files were found. Configuration error?

What am I doing wrong?

0 Answers
Related