Używam Jenkins Pipeline do automatycznego budowania i wdrażania moich aplikacji Java. Używam także wtyczki maven-release do wykonania Mavena do Artifactory.Używanie wtyczki Maven Release w Jenkins Pipeline
Problem jest mój Jenkinsfile (lub Jenkins Pipeline Configuration):
- Zobowiązujemy wersji 0.1.00-SNAPSHOT na uwalnianiu oddziału
- Jenkins Pipeline uzyskać kod i wykonaj maven uwolnienia
- Maven Release zmienia wersję na 0.1.00
- Tagi wydania Maven Oddział GIT, zatwierdzenie i wdrożenie artefaktu
- Maven Release zmienia wersję na 0.2.00-SNAPSHOT i zatwierdza
- Jenkins Pipeline wykryć zmiany w GIT, więc uruchamia nową kompilację
zrozumiałeś, że ostatni krok tworzy nieskończoną pętlę, nawet jeśli nie jest przydatna popełnić.
Oto interesująca część mojego Jenkinsfile:
sshagent([git_credential]) {
sh "${maven_bin} --settings ${maven_settings} -DreleaseVersion=${release_version} -DdevelopmentVersion=${development_version} release:prepare release:perform -B"
}
Jak mogę przerwać pętlę (unikać Jenkins wywołać nową kompilację gdy Maven popełnia na GIT)?
Dzięki
Niestety nie otrzymuję tego, chcesz wykonać kompilację przy każdej zmianie, a to jest typowe, ale po co każdemu zatwierdzeniu też się wydaje? Myślę, że problem polega na tym, że kompilacja uruchomiona przez zatwierdzenie nie powinna również spowodować wydania. Moim zdaniem, wyzwalane zadanie powinno być uruchomione, zadanie zwolnienia nie powinno być uruchamiane automatycznie. Pierwszy rodzaj pracy nie będzie dowolna pętla, ponieważ prosta komenda maven nie zatwierdza niczego, wydanie nie powinno być wyzwalane przez zatwierdzenie, ponieważ samo robi ostatnie zatwierdzenie aktualizacji wersji dev ... tworzenie pętli – ivoruJavaBoy
Celem jest automatyczne wykonanie wydania maven , gdy coś jest popychane w gałęzi "wydania". Już uruchamiam kompilację w każdej gałęzi "master", aby wykonać test jednostki. Można by to nazwać ciągłym wdrażaniem, jeśli chcesz. – frinux
Moja wina, tęskniłem, kiedy odnosiłeś się do gałęzi wydań ... pomyśl o tym, brzmi ciekawie :) – ivoruJavaBoy