Jenkins CI: jak wyzwalać buildy NA SVN commit

Jakie wtyczki i funkcje wtyczek muszę ustawić, aby mój Jenkins uruchomił kompilację w dowolnym momencie, gdy kod zostanie oddany do projektu SVN?

Zainstalowałem zarówno standardową wtyczkę SVN, jak i wtyczkę SVN tagging, ale nie widzę żadnych nowych funkcji, które pozwalają na konfigurację wyzwalaczy.

Author: Peter Mortensen, 2012-04-04

4 answers

Są dwa sposoby, aby to zrobić:

Polecam pierwszą opcję początkowo, ze względu na łatwość implementacji. Po dojrzeniu w procesach budowania przełącz się na drugi.

  1. Przepytaj repozytorium, aby sprawdzić, czy nastąpiły zmiany. Może to "pominąć" commit, jeśli dwa commity pojawią się w tym samym odstępie czasowym. Opis Jak to zrobić tutaj , zwróć uwagę na czwarty zrzut ekranu, gdzie skonfigurujesz na zadaniu "build trigger" na podstawie ankiety repozytorium (z konfiguracją podobną do crontab).

  2. Skonfiguruj swoje repozytorium tak, aby miało hook po zatwierdzeniu, który powiadamia Jenkinsa o konieczności uruchomienia kompilacji. Opis Jak to zrobić tutaj , w sekcji "Post-commit hooks"

Funkcja znacznika SVN nie jest częścią ankiety, jest częścią promowania aktualnej "głowy" kodu źródłowego do tagu, aby migać kompilację. Pozwala to odwoływać się do Jenkins buid #32 jako SVN tag / tags / build-32 (lub coś podobnego).

 76
Author: Edwin Buck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-22 12:26:11

Stworzyłem narzędzie używając Pythona z bash ' em do uruchomienia kompilacji Jenkinsa. Zasadniczo musisz zebrać te dwie wartości z post-commit, gdy commit trafi na serwer SVN:

REPOS="$1"
REV="$2"

Następnie używasz "svnlook dirs-changed $1-R $2", aby uzyskać ścieżkę, która została właśnie zatwierdzona. Następnie możesz sprawdzić, które repozytorium chcesz zbudować. Wyobraź sobie, że masz sto tysięcy projektów. Nie możesz sprawdzić całego repozytorium, prawda?

Możesz sprawdzić mój skrypt z GitHub .

 0
Author: Phan Dolphy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-18 20:55:56

Musisz wymagać tylko jednej wtyczki, która jest wtyczką Subversion.

Następnie przejdź do sekcji Jenkins → job_name → Build Trigger → (i) uruchamianie budowania zdalnie (tj. ze skryptów) Token uwierzytelniania: Token_name

Przejdź do katalogu hooków serwera SVN, a następnie po odpaleniu poniższych komend:

  1. cp post-commit.tmpl post-commit
  2. chmod 777 post-commit
  3. chown -R www-data:www-data post-commit
  4. vi post-commit

    Uwaga: wszystkie wiersze powinny być komentowane Dodaj below line at last

Składnia (dla użytkowników Linuksa):

/usr/bin/curl http://username:API_token@localhost:8081/job/job_name/build?token=Token_name

Składnia (dla użytkownika Windows):

C:/curl_for_win/curl http://username:API_token@localhost:8081/job/job_name/build?token=Token_name
 0
Author: Hemin Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-18 20:58:50

Możesz użyć Hooka po zatwierdzeniu.

Umieść skrypt Hooka po zatwierdzeniu w folderze hooks, Utwórz wget_folder na dysku C:\ i umieść plik wget.exe w tym folderze. Dodaj następujący kod w pliku o nazwie post-commit.bat

SET REPOS=%1   
SET REV=%2

FOR /f "tokens=*" %%a IN (  
'svnlook uuid %REPOS%'  
) DO (  
SET UUID=%%a  
)  

FOR /f "tokens=*" %%b IN (  
'svnlook changed --revision %REV% %REPOS%'  
) DO (  
SET POST=%%b   
)

echo %REPOS% ----- 1>&2

echo %REV% -- 1>&2

echo %UUID% --1>&2

echo %POST% --1>&2

C:\wget_folder\wget ^   
    --header="Content-Type:text/plain" ^   
    --post-data="%POST%" ^   
    --output-document="-" ^   
    --timeout=2 ^     
    http://localhost:9090/job/Test/build/%UUID%/notifyCommit?rev=%REV%    

Gdzie Test = Nazwa zadania

echo jest używany, aby zobaczyć wartość i możesz również dodać exit 2 na końcu, aby dowiedzieć się o problemie i czy skrypt Hooka po zatwierdzeniu jest uruchomiony, czy nie.

 -1
Author: Megha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-01 13:20:48