Sie sind richtig, das scm
Objekt hat die Informationen, die Sie benötigen.
Wenn git als Quellcodeverwaltung in einem Pipeline-Projekt (oder Multibranch-Pipeline-Projekt) verwendet wird, ist die globale Variable scm
eine Instanz von GitSCM. Das bedeutet, dass 'scm.getUserRemoteConfigs()' eine Liste von UserRemoteConfig Instanzen zurückgibt. Diese Instanzen haben den Namen der Git Remote, URL und Refspec. Sie können über diese Liste iterieren, um eine passende Fernbedienung zu finden, oder einfach die erste nehmen, wenn Sie sicher sind, dass Sie nur eine URL haben.
def scmUrl = scm.getUserRemoteConfigs()[0].getUrl()
NOTES
RejectedAccessException - Die getUserRemoteConfigs
und getUrl
Methoden werden beide org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException
werfen, bis Sie sie manuell genehmigen, unter "Jenkins Manage -> In-Prozess-Script Zulassung". Die einzige Möglichkeit, die ich gefunden habe, besteht darin, das Skript auszuführen, eine Zugriffsausnahme auslösen zu lassen, die eine Methode zu genehmigen, die die Ausnahme verursacht hat, und für jede Methode zu wiederholen, bis keine Zugriffsausnahmen mehr ausgelöst werden. Glücklicherweise ist die Einstellung serverweit, Sie müssen das also nur einmal pro jenkins-Controller tun, nicht für jeden Pipeline-Job.
GitHub - während sie mit einer GitHub Testen -sourced mehrfach verzweigten Rohrleitung, getUserRemoteConfigs
zurück UserRemoteConfig zwei Instanzen, ein für normale Verzweigungen und eine andere für Pull-Anforderungen. Diese hatten die gleiche URL, also keine große Sache, aber etwas zu beachten. Zum Beispiel in einem Projekt über eine HTTPS-basierte Verbindung:
echo scm.getUserRemoteConfigs()
"[
+refs/heads/*:refs/remotes/origin/* => https://github.com/bitwiseman/project.git (origin),
+refs/pull/*/head:refs/remotes/origin/pr/* => https://github.com/bitwiseman/project.git (origin)
]"
Das ist mehr für Freestyle-Jobs als Multibranch-Pipeline. – BitwiseMan
So arbeite ich mit jenkins – CodeWizard
Vereinbart, für Freestyle-Jobs, was Sie beschreiben, ist richtig. Aber Multibranch Pipepline funktioniert anders. Da die Frage speziell für Pipelineaufträge mit mehreren Branches gilt, gilt Ihre Antwort nicht. – BitwiseMan