2014-07-05 13 views
16

Poszukuję sposobu na przesłanie artefaktu kompilacji jako Github Release w Jenkins jako akcja lub wydawca po wybudowaniu - podobnego do Publish Over.Prześlij artefakt kompilacji do Github jako wydanie w Jenkins

To nie jest jeszcze obsługiwane przez wtyczkę Github dla Jenkins (JENKINS-18598).

Przeglądałem wtyczkę postbuild-task, ale wydaje się, że nie obsługuje ona zmiennych środowiskowych (które, jak przypuszczam, byłyby pomocne w zapobieganiu rejestrowaniu mojego tokena API w wynikach kompilacji).

Czy ktoś już to zrobił? Jaki byłby dobry sposób rozwiązania tego problemu z Jenkinsem? Przesyłanie przez cURL lub przez klienta CLI (np. Oparty na Go github-release).

Odpowiedz

7

Myślę, że jesteś na dobrej drodze!

  1. Dodaj wtyczki po build zadanie do Jenkins
  2. Użyj „skrypt uruchomić tylko wtedy, gdy wszystkie poprzednie kroki były udane” opcja
  3. Chciałbym utworzyć parametry Jenkins o nazwie wydania, nazwa tag itd. I że zapisz te dane wraz z poświadczeniami do pliku jako ostatni krok w procesie kompilacji (przed wykonaniem zadania po kompilacji).
  4. Dodaj krótki skrypt do etapu zadania po kompilacji, która wywołuje API GitHub:
  5. ustawić zmienne środowiskowe z zapisanego pliku i usunąć go
  6. CURL POST dla https://developer.github.com/v3/repos/releases/#create-a-release (Można użyć po kompilacji wtyczki Jenkings Groovy . zamiast wtyczki po build zadań i uzyskać dostęp do zmiennych środowiskowych bez zapisywania ich do pliku, ale byłoby dodać tyle złożoności, że nie warto używać tej wtyczki)
  7. CURL pOST przesłać artefakt: https://developer.github.com/v3/repos/releases/#upload-a-release-asset
+0

Dzięki za swoimi szkicami, to było to, co Miałem głównie na myśli. Próbowałem już ze skryptem post-build Groovy (używając [HTTPBUilder] (http://groovy.codehaus.org/modules/http-builder/home.html)), ale to [nie działa] (http: // groovy .codehaus.org/modules/http-builder/home.html). Będę musiał dla wersji CURL, a także spróbować ustawić zmienne środowiskowe. – StephenKing

17

I solv ed za pomocą narzędzia github-release. Działa jak urok i bardzo proste.

  1. Dodaj odpowiednich parametrów do budowy
  2. Dodaj skrypt do swojego postu build kroki
  3. Wprowadź ten kod:
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

Naprawdę powinna istnieć wtyczka Jenkinsa obsługująca potoki Jenkinsa dla tego ... –

Powiązane problemy