Masz rację, obiekt scm
ma potrzebne informacje.
Podczas korzystania z git jako formantu źródłowego w projekcie Pipeline (lub projekcie Multibranch Pipeline), zmienna globalna scm
będzie instancją GitSCM. Oznacza to, że `scm.getUserRemoteConfigs() 'zwróci listę instancji UserRemoteConfig. Te instancje mają nazwę zdalnego kontrolera git, adres url i refspec. Możesz iterować po tej liście, aby znaleźć pasującego pilota, lub po prostu zabrać pierwszą, jeśli na pewno masz tylko jeden adres URL.
def scmUrl = scm.getUserRemoteConfigs()[0].getUrl()
UWAGI
RejectedAccessException - The getUserRemoteConfigs
i getUrl
metody będą zarówno rzucać org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException
aż ręcznie je zatwierdza, w ramach "Zarządzanie Jenkins -> W procesie Approval Script". Jedynym sposobem, jaki udało mi się to zrobić, jest uruchomienie skryptu, wysłanie wyjątku dostępu, zatwierdzenie jedynej metody, która spowodowała wyjątek, i powtarzanie dla każdej metody, dopóki nie zostaną zgłoszone żadne wyjątki dostępu. Na szczęście ustawienie jest dla całego serwera, więc musisz to zrobić tylko raz na kontroler Jenkins, a nie dla każdego zadania z potokiem.
GitHub - Podczas testowania z GitHub, mając na uwadze wielobranżowy rurociągu getUserRemoteConfigs
powrócił dwie instancje UserRemoteConfig, jeden dla regularnych oddziałów, a drugi do wniosków ciągnąć. Miały ten sam URL, więc nic wielkiego, ale coś, o czym trzeba pamiętać. Na przykład w projekcie za pomocą połączenia HTTPS opartej:
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)
]"
To więcej dla zadań freestyle niż dla wielu gałęzi. – BitwiseMan
Tak pracuję z jenkinami – CodeWizard
Uzgodniono, że praca freestyle to, co opisujesz, jest poprawne. Ale pipeplina wielopanowa działa inaczej. Ponieważ pytanie dotyczy zadań z wieloma potokami, odpowiedź nie ma zastosowania. – BitwiseMan