2016-05-11 14 views

Antwort

0

Verwenden Sie den Stash Notifier, indem Sie ihn als Post Step in Ihrer Jenkins Build Job-Konfiguration hinzufügen.

In Ihrem Jenkins Job-Konfiguration auf die Post-Build gehen Abschnitt Aktionen, auf Post-Build-Aktion klicken Sie auf Hinzufügen und Stash Instanz Geben Sie die Stash Basis-URL, e. g. http://localhost:7990 or http://my.company/stash.

Im Zweifelsfall Benachrichtigen Sie wählen, zu Ihrem lokalen gehen Stash Server und überprüfen Sie die URL im Browser. Die URL http://[email protected]:7991/projects e. G. gibt die Serverbasis-URL an, die in diesem Fall http://localhost:7991 ist. Verwenden Sie das Credentials-Plugin, um Anmeldeinformationen für den Stash auszuwählen.

+1

Als ich meine Frage gestellt: "Die Konfigurationsseite hat keinen 'Post-Build-Aktionen-Abschnitt'." Hat Ihre Jenkins 2 Multibranch-Pipeline einen solchen Abschnitt? –

+0

dies funktioniert nur, wenn Sie einen Standard-jenkins-Job verwenden ... die Frage war, wie es mit Pipeline und ich denke, Sie müssen in der Lage sein, das Plugin als ein Schritt zu nennen. – kenyee

1

Ich denke, es ist immer noch nicht kompatibel mit der Pipelinetyp Pipeline oder Multi-Branch.

Ich denke, Abhijeet Kamble bedeutet, dass Sie einfach einen http-Client oder Curl verwenden können, um die Updates selbst zu senden.

Etwas wie folgt aus:

withCredentials([[$class   : 'UsernamePasswordMultiBinding', credentialsId: "$env.componentCredentialsId", 
      usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) { 
    writeFile file: 'build.json', text: "{\"state\": \"SUCCESSFUL\", \"key\": \"${env.JOB_NAME}\", \"name\": \"${env.BUILD_TAG}\", \"url\": \"${env.BUILD_URL}\"}" 
    sh '''curl -u $USERNAME:$PASSWORD -H "Content-Type: application/json" -X POST $URL -d @build.json''' 
} 

Sie beachten Sie, dass es sich um ein sehr einfaches Beispiel ist, nicht so anspruchsvoll wie das Plugin.

+0

konnte Plugin nicht funktionieren, weil CredentialsID nicht mit dem neuesten Jenkins 2.x funktioniert ... sie verwenden keine UUID mehr. Das war die einfachste Sache zu tun ... – kenyee

+0

Beachten Sie auch, dass die URL im folgenden Format sein muss: https: // /rest/build-status/1.0/commits/ kenyee

4

Stash Notifier unterstützt jetzt Pipelines ab Version 1.11.

Vom examples in the README:

node { 
    step([$class: 'StashNotifier'])   // Notifies the Stash Instance of an INPROGRESS build 

    try { 
     // Do stuff 
     currentBuild.result = 'SUCCESS'  // Set result of currentBuild !Important! 
    } catch(err) { 
     currentBuild.result = 'FAILED'  // Set result of currentBuild !Important! 
    } 

    step([$class: 'StashNotifier'])   // Notifies the Stash Instance of the build result 
} 

Während es sagt, dass currentBuild.result Einstellung ist, meine Erfahrung ist, dass dies nur der Fall ist, wenn Sie Ihre Schritte nicht bereits das zu tun „Wichtig!“. Wenn Sie z. B. sh "false" haben, müssen Sie das nicht in try/catch umbrechen, da der Schritt sh das Build-Ergebnis bei einem Beendigungscode ungleich Null als fehlerhaft festlegen wird. Dies sollte nur erforderlich sein, wenn Sie eine benutzerdefinierte Erfolgs-/Fehlerlogik benötigen.