web-dev-qa-db-fra.com

Répertoire de travail du pipeline Jenkins Docker

J'ai remarqué lors de l'utilisation de Jenkins avec le plugin Docker Pipeline. Lorsque je crée un fichier Jenkins pour exécuter des commandes dans un conteneur de menu fixe, il crée toujours un mappage de volume du répertoire d'espace de travail Jenkins mappé sur le même chemin dans le conteneur en cours d'exécution. Il crée également un répertoire de travail avec le même chemin.

docker run -t -d -u 127:134 -w /var/lib/jenkins/workspace/DockerTest 
-v /var/lib/jenkins/workspace/DockerTest:/var/lib/jenkins/workspace/DockerTest:rw,z 
-v /var/lib/jenkins/workspace/DockerTest@tmp:/var/lib/jenkins/workspace/DockerTest@tmp:rw,z 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
jekyll/jekyll:builder cat

J'ai essayé de contourner cela en fournissant des arguments dans mon Jenkinsfile pour Docker comme ceci:

pipeline {
  agent {
    docker {
      image 'jekyll/jekyll:builder'
      args '-v $HOME:/srv/jekyll -w /srv/jekyll'
    }
  }
  stages {
    stage('Test') {
      steps {
      sh 'cd /srv/jekyll && ls -l'
      }
    }
  }
}

Il semble que cela ajoute simplement les options à la commande Docker et que le mappage workdir and volume est remplacé par les paramètres par défaut:

docker run -t -d -u 127:134 
-v $HOME:/srv/jekyll 
-w /srv/jekyll 
-w /var/lib/jenkins/workspace/DockerTest 
-v /var/lib/jenkins/workspace/DockerTest:/var/lib/jenkins/workspace/DockerTest:rw,z 
-v /var/lib/jenkins/workspace/DockerTest@tmp:/var/lib/jenkins/workspace/DockerTest@tmp:rw,z 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
-e ******** 
jekyll/jekyll:builder cat

Existe-t-il un moyen de remplacer les mappages de volume et le répertoire de travail de quelque manière que ce soit?

8
julianlab

@ Nagri, malheureusement, je ne pouvais toujours pas spécifier le répertoire de travail et le mappage de volume. 

Mais je pourrais exécuter jekylll en tant que root.

Ce n'est pas idéal mais au moins ça marche.

`` `

pipeline {
    agent {
        docker {
            image 'jekyll/jekyll:builder'
            args '-u root'
        }
    }
    stages {
        stage('Test') {
            steps {
                sh 'mkdir -p _site'
                sh 'jekyll build'
            }
        }
    }
}

`` `

1
julianlab