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.