webentwicklung-frage-antwort-db.com.de

Jenkins Declarative Pipeline - Wie kann man den Pfad zu Jenkinsfile verwenden?

Wir haben eine Reihe von Jenkinsfile-Skripten, die identisch sind, mit der Ausnahme, dass jedes ein Umgebungselement so konfiguriert, dass es auf das Verzeichnis in der SCM-Kasse verweist, in dem sich die Jenkinsfile befindet. Damit wird auf eine Datei im selben Verzeichnis verwiesen. Das SCM-Repo enthält alle diese Jenkinsfile-Skripts in verschiedenen Verzeichnissen. Ich sehe ein einfaches Öffnen, um das Pipeline-Skript in jedem Fall identisch zu machen, wenn ich nur den Pfad des Verzeichnisses abrufen könnte, das die Jenkinsfile enthält. 

Ich habe verschiedene Dinge ausprobiert, zB Schritte

script {
    println __FILE__
}

und

script { 
    scriptDir = new File(getClass().protectionDomain.codeSource.location.path).parent
    println scriptDir
}

Keiner von denen lief (gab in __FILE__ Fall eine nicht vorhandene Variable und im zweiten Fall eine Berechtigungsverletzung an). Ich habe "${__FILE__}" und andere Varianten ausprobiert.

Ich muss das Verzeichnis in einem step-sh-Block verwenden, damit ich glaube, dass es sich in einem Umgebungselement befinden muss. 

Nun gibt die Jenkins-Jobkonfiguration den Pfad zur Jenkins-Datei an, aber ich möchte das nicht wiederholen, um eine andere Umgebungsvariable auf dieser Ebene zu erstellen. 

Bereits konsultiert:

Hilfe wird geschätzt.

5
Kevin Buchs

Wenn Sie wirklich benötigen, können Sie "${JOB_URL}config.xml" abrufen und scriptPath analysieren.

Aber das ist offensichtlich keine saubere Lösung.

1
Chadi