0

I am trying to running a Jenkins into a Docker using a Docker compose and when i try to build a job Jenkins shows me the next error:

Salida de consola
Started by user admin
Running as SYSTEM
Building in workspace C:\Users\cpaez\Documents\Automation\MOM\JSFiles
java.nio.file.AccessDeniedException: /C:\Users\cpaez\Documents\Automation\MOM\JSFiles
    at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
    at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:384)
    at java.nio.file.Files.createDirectory(Files.java:674)
    at java.nio.file.Files.createAndCheckIsDirectory(Files.java:781)
    at java.nio.file.Files.createDirectories(Files.java:767)
    at hudson.FilePath.mkdirs(FilePath.java:3260)
    at hudson.FilePath.access$1300(FilePath.java:211)
    at hudson.FilePath$Mkdirs.invoke(FilePath.java:1251)
    at hudson.FilePath$Mkdirs.invoke(FilePath.java:1247)
    at hudson.FilePath.act(FilePath.java:1075)
    at hudson.FilePath.act(FilePath.java:1058)
    at hudson.FilePath.mkdirs(FilePath.java:1243)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1200)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499)
    at hudson.model.Run.execute(Run.java:1880)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:97)
    at hudson.model.Executor.run(Executor.java:428)
Finished: FAILURE

This is Docker compose:

version: '2'
services:
  master:
    build: .
    image: jenkins/jenkins:latest
    restart: unless-stopped
    hostname: jenkins
    ports:
      - "8080:8080"
      - "50000:50000"
    volumes:
      - jenkins_home:/var/jenkins_home
 
volumes:
  jenkins_home:

And this is my Docker file:

FROM jenkins/jenkins
 
USER SYSTEM
RUN apt-get -y update && apt-get install -y maven
 
USER jenkins
COPY plugins.txt /usr/share/jenkins/ref/plugins.txt
RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt

Anyone can help me? Thank you in advance.

  • looks like your user has insufficient permissions here `/C:\......\MOM\JSFiles`, check the folders permissions. From your log > `AccessDeniedException` – abestrad Jul 06 '20 at 06:55
  • Please add your Jenkins Pipeline script (Jenkinsfile) or your job configuration with the exact executed commands. It looks like your build job is trying to write to a location (inside your container) where you do not have write permissions. – A.K. Jul 06 '20 at 06:57

1 Answers1

1

User jenkins in your container does not have access to folder C:\Users\cpaez\Documents\Automation\MOM\JSFiles on your host. Given your docker-compose.yml it's probably caused by either:

  • This directory does not exists in your container (as per the volume you are mounting), you may try to add
    volumes:
       - jenkins_home:/var/jenkins_home
       - /c/Users/cpaez/Documents/Automation/MOM/JSFiles:/c/Users/cpaez/Documents/Automation/MOM/JSFiles
      
  • Ensure this folder has enough permission for jenkins user in your container to write this directory (your container will run as this user as per the USER jenkins instruction)
Pierre B.
  • 11,612
  • 1
  • 37
  • 58
  • 1
    Hi , I changed my docker compose : volumes: - jenkins_home:/var/jenkins_home - C:\Users\cpaez\Documents\Automation\MOM\JSFiles:C:\Users\cpaez\Documents\Automation\MOM\JSFiles And this is the error that it is showing me now when i executed: docker-compose up -d Creating mom_master_1 ... error ERROR: for mom_master_1 Cannot create container for service master: Mount denied: The source path "\\Users\\cpaez\\Documents\\Automation\\MOM\\JSFiles:C:\\Users\\cpaez\\Documents\\Automation\\MOM\\JSFiles:rw" too many colons Can you help me ? Thank you in advance. – Carolina Páez Pérez Jul 06 '20 at 07:14
  • 1
    On Windows specifying paths for Compose is a bit different than on plain Linux (need to use `/` and not `\` ), I updated my answer – Pierre B. Jul 06 '20 at 09:19
  • You can check https://stackoverflow.com/questions/41334021/volume-binding-using-docker-compose-on-windows to setup Docker Compose volumes on WIndows – Pierre B. Jul 06 '20 at 09:21
  • Hi,thank you, now i can access but this error appears : Started by user Carolina Running as SYSTEM Building in workspace C:\Users\cpaez\Documents\Automation\MOM\JSFiles [JSFiles] $ /bin/sh -xe /tmp/jenkins7772105530923733597.sh + ./run.sh /tmp/jenkins7772105530923733597.sh: 2: /tmp/jenkins7772105530923733597.sh: ./run.sh: not found Build step 'Execute shell' marked build as failure Finished: FAILURE – Carolina Páez Pérez Jul 06 '20 at 10:26
  • Great, happy to help :) Your initial issue seems to be solved, this seems unrelated to your first issue, it seems you are trying to use `run.sh` script during your build but the file is not found. Maybe ask another question or edit this one with your Jenkins build steps – Pierre B. Jul 06 '20 at 11:04