2014-07-05 11 views
16

Ich bin auf der Suche nach einer Möglichkeit, ein Build-Artefakt wie Github Release in Jenkins als Post-Build-Aktion oder Publisher hochladen - ähnlich wie Publish Over.Hochladen Artefakt zu Github als Release in Jenkins

Dies wird vom Github-Plugin für Jenkins (JENKINS-18598) noch nicht unterstützt.

Ich habe in der postbuild-task Plugin gesucht, aber das scheint nicht zu unterstützen Umgebungsvariablen (die ich nehme, wäre hilfreich, um die Protokollierung meiner API-Token in der Build-Ausgabe zu verhindern).

Hat jemand das schon gemacht? Was wäre ein guter Weg, um das mit Jenkins zu lösen? Hochladen über cURL oder über einen CLI-Client (z. B. die Go-basierte github-release).

Antwort

7

Ich denke, Sie sind auf dem richtigen Weg!

  1. Fügen Sie den Beitrag Build-Task Plugin Jenkins
  2. Verwenden Sie das ‚Run-Skript nur, wenn alle vorherigen Schritte erfolgreich waren‘
  3. Option Ich würde Jenkins Parameter für die Freigabe Name, Tag-Namen usw. erstellen und würde Speichern Sie diese zusammen mit Ihren Anmeldeinformationen in einer Datei als letzten Schritt im Build-Prozess (vor der Ausführung der Post-Build-Task).
  4. ein kurzes Skript auf die Post Build-Task Schritt hinzufügen, die die Github-API-Aufrufe:
  5. die Umgebungsvariablen aus Ihrer gespeicherten Datei setzen und löschen Sie es
  6. Curl-Pfosten für https://developer.github.com/v3/repos/releases/#create-a-release (Sie das Plugin Jenkings Groovy Post Build verwenden könnte . statt der Post Build-Task-Plugin und Zugriff auf die Umgebungsvariablen, ohne sie in eine Datei zu speichern, aber es wäre so viel Komplexität hinzuzufügen, dass es nicht wert ist, dass Plugin zu verwenden)
  7. ROTATION POST das Artefakt zu laden: https://developer.github.com/v3/repos/releases/#upload-a-release-asset
+0

Vielen Dank für Ihre Skizzen, das war, was Ich hatte hauptsächlich daran gedacht. Ich habe versucht, mit einem Groovy Post-Build-Skript (mit [HTTPBUilder] (http://groovy.codehaus.org/modules/http-builder/home.html)), aber das [fehlschlägt] (http: // groovy .codehaus.org/modules/http-builder/home.html). Ich muss für die CURL-Version und auch versuchen, die Umgebungsvariablen zu setzen. – StephenKing

17

I solv ed es mit dem github-release Werkzeug. Funktioniert wie ein Charme und sehr einfach.

  1. einen relevanten Parameter an die Build
  2. hinzufügen einen Shell-Skript zu Ihrem Beitrag Build hinzufügen Schritte
  3. diesen Code ein:
echo "Compressing artifacts into one file" 
zip -r artifacts.zip artifacts_folder 

echo "Exporting token and enterprise api to enable github-release tool" 
export GITHUB_TOKEN=$$$$$$$$$$$$ 
export GITHUB_API=https://git.{your domain}.com/api/v3 # needed only for enterprise 

echo "Deleting release from github before creating new one" 
github-release delete --user ${GITHUB_ORGANIZATION} --repo ${GITHUB_REPO} --tag ${VERSION_NAME} 

echo "Creating a new release in github" 
github-release release --user ${GITHUB_ORGANIZATION} --repo ${GITHUB_REPO} --tag ${VERSION_NAME} --name "${VERSION_NAME}" 

echo "Uploading the artifacts into github" 
github-release upload --user ${GITHUB_ORGANIZATION} --repo ${GITHUB_REPO} --tag ${VERSION_NAME} --name "${PROJECT_NAME}-${VERSION_NAME}.zip" --file artifacts.zip 
+0

Es sollte wirklich ein Jenkins-Plugin mit Unterstützung für Jenkins-Pipeline für diese ... –

Verwandte Themen