Wie zu montieren Jenkins workspace in docker container mit Jenkins pipeline
Ich bin mit Jenkins im Andockfenster. Die /var/jenkins_home
ist montiert auf /var/jenkins-data
auf meinem host. Meine Jenkins ausgeführt werden können docker-Kommandos (mount sockets) und ich habe installiert die git-und pipeline-plugin.
Nun habe ich einen pipeline-Auftrag mit dem Namen test
und die folgende pipeline:
pipeline {
agent any
stages {
stage('Clone') {
steps {
git branch: 'master', url: 'https://github.com/lvthillo/maven-hello-world.git'
}
}
stage('Build in Docker') {
agent {
docker {
image 'maven:3.5.2'
args '-v /var/jenkins_home/workspace/test:/opt/maven -w /opt/maven'
}
}
steps {
sh 'pwd'
sh 'mvn -v'
sh 'mvn clean install'
}
}
}
}
Was ich erreichen will ist das Klonen meiner öffentlichen repo von github. Dieser funktioniert. Im nächsten Schritt möchte ich beginnen, einen docker-container (maven) und drucken Sie das aktuelle Verzeichnis der maven-version und eine Neuinstallation durchzuführen.
Den output der 3 Befehle:
[test@2] Running shell script
+ pwd
/var/jenkins_home/workspace/test@2
[Pipeline] sh
[test@2] Running shell script
+ mvn -v
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T07:58:13Z)
Maven home: /usr/share/maven
Java version: 1.8.0_151, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "4.4.86-boot2docker", arch: "amd64", family: "unix"
[Pipeline] sh
[test@2] Running shell script
+ mvn clean install
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.179 s
[INFO] Finished at: 2018-01-12T12:12:00Z
[INFO] Final Memory: 5M/31M
[INFO] ------------------------------------------------------------------------
[ERROR] The goal you specified requires a project to execute but there is no POM in this directory (/var/jenkins_home/workspace/test@2). Please verify you invoked Maven from the correct directory. -> [Help 1]
Scheint es zu funktionieren, denn maven ist nicht installiert auf meinem host, so dass es ausgeführt wird, aus dem inneren des Behälters, sondern es plötzlich einen neuen Arbeitsbereich erstellen (@2
) statt mit dem bestehenden, von wo aus ich die repo geklont. Ich will nicht clone das repo in meinem container sofort, weil ich will mehrere Etappen, alle mit verschiedenen Containern, aber alle ausgeführt auf mein git repo in meinem Arbeitsbereich.
Was mache ich falsch oder wie kann ich dieses Problem beheben?
Ich dachte, es war vielleicht, weil der agent Schritt. mein Erster Schritt kann auf jedem agent (jede slave), die Andockfenster Schritt wird ausgeführt, in der docker-container, sondern muss natürlich auf das gleiche Sklave als wo die git clone
ausgeführt wurde.
InformationsquelleAutor lvthillo | 2018-01-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie diese Leitung auch mit einem multi-node-setup. Andockfenster plugin von cloudbees mounts Ihrem Arbeitsbereich als Andockfenster Arbeitsbereich zu.Daher ist es nicht notwendig, montieren Sie jede Menge, es sei denn, Sie sind außerhalb des Arbeitsbereichs.
InformationsquelleAutor Ram Kamath
Dank, die Bisherige Lösung funktioniert für mich. Meine version für die Knoten-container und ${PWD} als param
InformationsquelleAutor Yuriy Shpool
Mein letzten Erklärung half mir das problem zu lösen:
Diese text mir geholfen, es zu lösen. Ich hatte, um sicherzustellen, dass alle Schritte auf meinem pipeline wurden mit dem gleichen agent wie die erste ein, wo trat ich meine git clone:
Addit
reuseNode
wahr es gelöst:InformationsquelleAutor lvthillo