0

In meiner CI-Infrastruktur habe ich einen Jenkins-Master, der als Container und 2 Slaves (vms) ausgeführt wird. Ich versuche, einen Build in einem Docker-Container auf einem Knoten auszuführen, also habe ich während des Build-Prozesses meinen Zielordner gespeichert, um ihn später auf einem anderen Knoten zu verwenden. im Auftragsprotokoll kann ich sehen, dass der Ordner erfolgreich gespeichert wurde. Wenn der Build fertig war, wird der Container automatisch zerstört. Im nächsten Schritt stoppe ich den Ordner, um weitere Stufen in einem separaten Knoten zu erreichen, aber nichts ist passiert. Es scheint, als hätte ich nichts getan.Stash/Unstash zum Übertragen von Daten von einem Erstellungscontainer zu einem anderen Knoten (in Jenkins)

plz Wie kann ich mein Ziel aus dem Container auf einen anderen Knoten oder sogar auf den Master übertragen ???

dies meine Pipeline Code:

node('docker') { 
 
    stage('Checkout Code') { 
 
     checkout scm 
 
      } 
 
    stage('Build') { 
 
    withMaven(jdk: 'jdk_8', maven: 'maven 3') { 
 
     mvn 'clean install' 
 
     stash name: 'war', includes: 'x.war' 
 
    } 
 
    } 
 

 
node('master') { 
 
    stage('test') { 
 
    withMaven(jdk: 'jdk_8', maven: 'maven 3') { 
 
     unstash : \t 'war' 
 
     sh 'mvn clean test' 
 
    } 
 
    } 
 
} 
 
}

Antwort

1

Ich bezweifle, dass der Krieg tatsächlich gebunkert wird, da die erzeugte Krieg nicht im selben Verzeichnis vorhanden sein sollten, wo Sie mvn clean install ausgeführt.

Ich erwarte, dass der Krieg unter Ziel ist. Möglicherweise möchten Sie includes: 'x.war' zu includes: 'target/x.war' ändern. Alternativ, gehen Sie zum Maven-Repository, in dem der Krieg installiert ist, und speichern Sie die Datei von dort:

withMaven(jdk: 'jdk_8', maven: 'maven 3') { 
    mvn 'clean install' 
    dir('<path to war>'){ 
     stash name: 'war', includes: 'x.war' 
    } 
} 
Verwandte Themen