Jenkins Pipeline, wie man in einen anderen Ordner wechselt


77

Derzeit verwende ich Jenkins Pipeline-Skript.

Um einen Befehl auszuführen, muss ich auf einen Ordner außerhalb seines Arbeitsbereichsverzeichnisses zugreifen.

Ich habe es versucht sh "cd $workspace/", aber es wurde der aktuelle Arbeitsbereichsordner zurückgegeben.

Wie kann ich in das Stammverzeichnis des Arbeitsbereichs und dann in einen anderen Ordner wechseln? Bitte helfen Sie.

Antworten:


150

Sie können den dir- Schritt verwenden, Beispiel:

dir("folder") {
    sh "pwd"
}

Dies folderkann ein relativer oder absoluter Pfad sein.


Es wird jedoch in den aktuellen Jobordner verschoben. Ich möchte zu Jenkins Arbeitsbereich wechseln
Wanderer

Wie gehst du wieder nach oben?
DanDan

@DanDan alles außerhalb dieses dirSchritts ist "wieder aufwärts", siehe auch Antwort / Beispiel von Gonzalo Robert Diaz: stackoverflow.com/a/59776342/757308
msa

Beachten Sie, dass das Verzeichnis außerhalb des Verzeichnisses zurückgesetzt wird. Es ist nicht wie cd directoryin einer Muschel.
Kap

18

Verwenden Sie die Umgebungsvariable WORKSPACE, um das Arbeitsbereichsverzeichnis zu ändern.

Verwenden Sie bei Verwendung von Jenkinsfile den folgenden Code:

dir("${env.WORKSPACE}/aQA"){
    sh "pwd"
}

dir('aQA')funktioniert genauso. Keine Notwendigkeit für diese Komplexität
Kirill

18

Der dirWrapper kann jeden anderen Schritt umbrechen und alles funktioniert innerhalb eines stepsBlocks, zum Beispiel:

        steps {
          sh "pwd"
          dir('your-sub-directory'){
            sh "pwd"
          }
          sh "pwd"
        } 

2
sh "$PWD"ist kein korrekter Befehl, da Sie versuchen, den Pfad selbst auszuführen.
Kenorb

2
@ GonzaloRobertDíaz shist der Jenkins-Schritt, der das Argument ausführt, das Sie als Shell-Skript übergeben. Wenn Sie Ihren eigenen Code testen, wird eine permission deniedFehlermeldung angezeigt, da diese $PWDnicht ausführbar ist. Verwenden Sie echo "$PWD"oder sh "pwd"stattdessen. Lernen Sie auch, Kritik zu üben.
JP de la Torre
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.