2016-04-01 3 views
1

Es scheint, dass der Code-Checkout mit Jenkinsfile http für den Remote-Ursprung verwendet und wir stattdessen ssh verwenden möchten.Wie kann ich Jenkinsfile sagen, ssh anstelle von http für checkedout code zu verwenden?

#!groovy 

stage 'build' 
node { 
    checkout scm 
    sh "cat .git/config" 
} 

Dies wird eine HTTPS-Herkunft anstelle einer SSH-Quelle ausgeben. Der Job wird mit dem Plugin github-organisation-pipeline konfiguriert, sodass es keine Möglichkeit gibt, die Quelle aus der Jobkonfiguration in jenkins zu steuern.

Antwort

0

Hier ist mein aktueller Ansatz, der hässlich ist, ich werde das nicht verteidigen.

tokens = "${env.JOB_NAME}".tokenize('/') 
org = tokens[0] 
repo = tokens[1] 
branch = tokens[2] 
sh "git remote set-url origin [email protected]:${org}/${repo}.git" 

Dies funktioniert, weil Github-Organisation-Plugin Arbeitsplätze Namen erzeugen, die wie org/repo/branch aussehen.

0

Der Konfigurationsbildschirm des Organisationsordners enthält eine Option zur Verwendung bestimmter Checkout-Anmeldeinformationen, normalerweise ein privater SSH-Schlüssel. Standardmäßig verwendet es die API-Scan-Anmeldeinformationen, normalerweise ein Zugriffstoken, das für HTTPS-Checkouts verwendet werden kann (GitHubs eigene Empfehlung).

+0

Nur für weitere Details zum Multi-Branch-Pipeline-Plug-in können die Checkout-Anmeldeinformationen nach dem Erweitern des Abschnitts "Advanced" der Zweigquelle festgelegt werden. Wenn es auf einen ssh-Schlüssel-Berechtigungsnachweis gesetzt ist, wird ssh verwendet. – sporkthrower

Verwandte Themen