wake-up-neo.net

So rufen Sie den aktuellen Arbeitsbereich mit dem Jenkins Pipeline Groovy-Skript ab

Ich versuche, den aktuellen Arbeitsbereich meines Jenkins-Builds mit einem Groovy-Pipeline-Skript abzurufen:

node('master') {
    // PULL IN ENVIRONMENT VARIABLES
    // Jenkins makes these variables available for each job it runs
    def buildNumber = env.BUILD_NUMBER
    def workspace = env.WORKSPACE
    def buildUrl = env.BUILD_URL

    // PRINT ENVIRONMENT TO JOB
    echo "workspace directory is ${workspace}"
    echo "build URL is ${env.BUILD_URL}"
}

Es gibt zurück:

[Pipeline] Allocate node : Start
Running on master in /Users/Shared/Jenkins/Home/jobs/test/workspace
[Pipeline] node {
[Pipeline] echo
workspace directory is null
[Pipeline] echo
build URL is http://localhost:8080/job/test/5/
[Pipeline] } //node
[Pipeline] Allocate node : End
[Pipeline] End of Pipeline
Finished: SUCCESS
16
N.Reddy

Für mich funktionierte nur ${workspace} ohne die Variable 'workspace' zu initialisieren.

13
Litty Philip

Es ist noch keine Variable dafür enthalten, daher müssen Sie die Shell-out-read-file-Methode verwenden:

sh 'pwd > workspace'
workspace = readFile('workspace').trim()

Oder (wenn auf einem Masterknoten ausgeführt):

workspace = pwd()
6

Ich denke, Sie können die Funktion pwd () auch auf dem jeweiligen Knoten ausführen:

node {
    def PWD = pwd();
    ...
}
4
chris_f

Eine kurze Notiz für alle, die bat im Job verwenden und auf Workspace zugreifen müssen:

Es wird nicht funktionieren .

$WORKSPACEhttps://issues.jenkins-ci.org/browse/JENKINS-33511 wie hier erwähnt funktioniert nur mit PowerShell. Ihr Code sollte also powershell zur Ausführung haben

 stage('Verifying Workspace') {
  powershell label: '', script: 'dir $WORKSPACE'
}
1
Ismail

Hier finden Sie die Antwort im job-dsl-plugin-Code .

Grundsätzlich kannst du so etwas tun:

readFileFromWorkspace('src/main/groovy/com/groovy/jenkins/scripts/enable_safehtml.groovy')
0
Dresden