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

Schreibe einen Kommentar