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.
Wenn Sie wirklich benötigen, können Sie "${JOB_URL}config.xml"
abrufen und scriptPath
analysieren.
Aber das ist offensichtlich keine saubere Lösung.