Lei ha ragione, l'oggetto scm
ha le informazioni necessarie.
Quando si utilizza git come controllo del codice sorgente in un progetto Pipeline (o progetto Pipeline Multibranch), la variabile globale scm
sarà un'istanza di GitSCM. Ciò significa che `scm.getUserRemoteConfigs() 'restituirà un elenco di istanze UserRemoteConfig. Queste istanze hanno il nome, l'url e il refspec del git remote. Puoi scorrere su quell'elenco per trovare un telecomando corrispondente, o semplicemente prendere il primo se sei sicuro di avere solo un url.
def scmUrl = scm.getUserRemoteConfigs()[0].getUrl()
NOTE
RejectedAccessException - I getUserRemoteConfigs
e getUrl
metodi saranno entrambi gettare org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException
fino a quando non li approvi manualmente, sotto la voce "Gestione Jenkins -> in-process Script di approvazione". L'unico modo che ho trovato per fare questo è provare a eseguire lo script, fargli lanciare un'eccezione di accesso, approvare l'unico metodo che ha causato l'eccezione e ripetere per ciascun metodo fino a quando non vengono lanciate più eccezioni di accesso. Fortunatamente l'impostazione è a livello di server, quindi devi farlo solo una volta per controller jenkins, non per ogni lavoro di pipeline.
GitHub - Durante il test con un GitHub -sourced gasdotto multiramo, getUserRemoteConfigs
restituito due istanze UserRemoteConfig, uno per rami regolari e un altro per le richieste di trazione. Questi avevano lo stesso URL quindi non un grosso problema, ma qualcosa da tenere a mente. Per esempio, in un progetto che utilizza una connessione HTTPS-based:
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)
]"
Questo è più per lavori freestyle che per pipeline multibranch. – BitwiseMan
Questo è il modo in cui lavoro con jenkins – CodeWizard
D'accordo, per i lavori freestyle ciò che descrivi è corretto. Ma pipepline multibranch funziona diversamente. Poiché la domanda è specifica per i lavori della pipeline multi-traccia, la tua risposta non si applica. – BitwiseMan