2017-12-14 8 views
1

Ich habe ein benutzerdefiniertes Nexus für projektbezogene Dienstprogramm Gläser. Ich habe einen Jenkins, um diese Gläser zu bauen.Wie rufe ich in Jenkins gespeicherte Credentials auf, um sie in einem Jenkinsfile auf einem benutzerdefinierten Nexus bereitzustellen?

Ich möchte Gradle im Projekt und eine Jenkinsfile verwenden, um die Pipeline zu definieren. Als letzte Stufe möchte ich, dass der Build-Auftrag das Artefakt auf meinem Nexus bereitstellt.

Da ich die Anmeldeinformationen für das Nexus nicht in meinem Quellenrepository (und daher weder im Gradle-Skript noch in der Jenkins-Datei) haben möchte, habe ich im Jenkins Credentials-Plugin einen Berechtigungseintrag eingerichtet, der Benutzer und Passwort enthält der Nexus.

Wie beziehe ich mich auf diese Anmeldeinformationen innerhalb der Jenkinsfile, so dass ich sie für die Bereitstellung auf dem Nexus verwenden kann?

Derzeit sieht mein deploy Bühne wie folgt aus:

stage('Publish') { 
    sh "gradle upload" 
} 

Kann ich für diesen Zweck überhaupt gradle verwenden? Ich weiß, ich kann es lokal verwenden, aber es wäre in Ordnung für mich, einen anderen Befehl aus der Jenkinsfile zu verwenden.

In gradle, verwende ich diese Aufgabe zu definieren: (i. Die Benutzer und Passwort als Umgebungsvariablen lokal gesetzt Das ist keine Option auf dem Jenkins, natürlich.)

def nexusUser = "$System.env.NEXUS_USER" 
def nexusPass = "$System.env.NEXUS_PASS" 

uploadArchives { 
    repositories { 
     mavenDeployer { 
      repository(url: "http://nexus.example.com/repository/maven-releases/") { 
       authentication(userName: nexusUser, password: nexusPass) 
      } 
     } 
    } 
} 

+0

Warum funktioniert die Verwendung von Umgebungsvariablen nicht? – mkobit

+0

Stimmen Sie absolut zu, dass Sie Umgebungsvariablen in Ihre jenkins-Installation einschließen können. –

+0

Sie können auch die globalen Anmeldeinformationen von Jenkins –

Antwort

2

Sie können in externen Variablen gesetzt ~/.gradle/gradle.properties nexusUser=superuser nexusPass=superpassword

+1

Ja, ich schätze, dass dies die optimale Lösung ist, denken Sie daran, dass Sie es unter dem Benutzer jenkins ändern müssen (der tatsächlich das CI ausführt) –

0

Sie withCredentials(){} Schritt verwenden können, um Umgebungsvariablen zu injizieren welche wil Ich bin nur innerhalb {} Block sichtbar.

Verwandte Themen