Zmiana numeru kompilacji Jenkinsa


142

Czy istnieje sposób na zmianę numeru kompilacji wysyłanego pocztą e-mail po zakończeniu zadania? Problem polega na tym, że Jenkins NIE wykonuje kompilacji produktów, więc chcemy mieć możliwość uzyskania numeru kompilacji (tj. Z pliku tekstowego) i zaktualizowania numeru kompilacji w Jenkins, aby go dopasować. Próbowałem ustawić numer kompilacji:

set BUILD_NUMBER=45

Ale e-mail nadal zawiera numer kompilacji, który pierwotnie ustawił Jenkins.

Odpowiedzi:


259

Jeśli masz dostęp do konsoli skryptów (Manage Jenkins -> Script Console), możesz wykonać następujące czynności:

Jenkins.instance.getItemByFullName("YourJobName").updateNextBuildNumber(45)

7
Mogę sprawdzić, czy to działa idealnie, aby rozwiązać problem. Ręcznie skopiowałem historię kompilacji między dwoma serwerami Jenkins, a na nowym serwerze nextBuildNumber był zły. Uruchomienie tego pozwoliło mi ustawić poprawny nowy numer nextBuildNumber, bez konieczności przeładowywania konfiguracji jenkinsa.
— Phil Hollenback

5
Jeśli używasz wtyczki GitHub, "YourJobName"to "organization/repository/branchname".
— Ruud

15
Pracuje. Wartość można zweryfikować bez budowania za pomocą:Jenkins.instance.getItemByFullName("YourJobName").getNextBuildNumber()
— Daniel Alder

7
Mogę potwierdzić, że to działa również dla MultiBranch-Pipelines. „JobName” znajduje się na górze strony oddziału: Pełna nazwa projektu: PipelineName/BranchNametak będzieJenkins.instance.getItemByFullName("YourPipelineName/YourBranchName").updateNextBuildNumber(45)
— Markus


37

można zrobić za pomocą wtyczki: https://wiki.jenkins-ci.org/display/JENKINS/Next+Build+Number+Plugin

więcej informacji: http://www.alexlea.me/2010/10/howto-set-hudson-next-build-number.html

jeśli nie lubisz wtyczki:

Jeśli chcesz zmienić numer kompilacji za pomocą pliku nextBuildNumber, powinieneś "Przeładować konfigurację z dysku" ze strony "Zarządzaj Jenkins".


2
Nie ma potrzeby używania wtyczki.
— david.perez

1
Dzięki, oszczędzasz mi dzień.
— Yukio Fukuzawa

29

W folderze obszaru roboczego zadania, na przykład:

C:\Program Files (x86)\Jenkins\jobs\job_name

jest plik o nazwie nextBuildNumber.

Ustawienie numeru kompilacji w pliku i ponowne załadowanie konfiguracji z dysku (menu Manage Jenkins) wymusi, że następna kompilacja, od której zaczniesz, będzie miała wartość z pliku BUILD_NUMBER.


9
Czy ponownie załadowałeś konfigurację z dysku (menu Manage Jenkins) po zmianie pliku nextBuildNumber?
— vezenkov

Nie! Myślałem, że stało się to automatycznie.
— hfossli

To zadziałało idealnie dla mnie. Musisz ponownie uruchomić serwer, zanim zacznie działać.
— Hawkeye64

Konieczność ponownego uruchomienia serwera jest uciążliwa, jeśli masz wielu użytkowników korzystających z potoku. Lepiej unikaj tego rodzaju rozwiązań
— MorganGeek

8

Jeśli masz nazwę gałęzi zawierającą ukośnik Forward ( na przykład używając git flow ), będziesz musiał zamienić ukośnik Forward na znak Unicode % 2F w nazwie gałęzi.

Oto przykład dla potoku My-Pipeline-Name i wersji branch / my-release-branch-name

Jenkins.instance.getItemByFullName("My-Pipeline-Name/release%2Fmy-release-branch-name").updateNextBuildNumber(BUILD_NUMBER)

Mogłem się o tym dowiedzieć, uruchamiając następujące polecenie, które wyświetli listę różnych zadań (gałęzi) dla twojego potoku

Jenkins.instance.getItem("My-Pipeline-Name").getAllJobs()

Mam nadzieję, że to pomoże.



1

Możesz zmienić numer kompilacji, aktualizując plik $ {JENKINS_HOME} / jobs / job_name / nextBuildNumber na serwerze Jenkins.

Możesz także zainstalować wtyczkę Wtyczka Next Build Number, aby zmienić numer kompilacji za pomocą CLI lub UI


Zwróć uwagę, że sama zmiana numeru kompilacji w pliku nextBuildNumber nie wystarczy, konieczne jest również wykonanie polecenia „Przeładuj konfigurację z dysku” w menu „Zarządzaj Jenkins”.
— falstaff

-4

Używając zmiennych środowiskowych:

$BUILD_NUMBER =4

2
Proszę, nie krzycz. Dziękuję Ci.
— OliBlogger
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.