標籤:
如何在Windows上編寫post-receive,當git使用者push檔案到git server時。檢查commit message,如果包含RUN_BUILD就調用Jenkins build API編譯項目。
環境設定:
1. 安裝Jenkins ---流行的代碼管理工具
選擇Remote trigger scripts 在Jenkins Job build 配置項。
2. 安裝scm-manager ---同時支援svn,git...
3. 安裝git-client---需要用到git command
4. 安裝wget command---訪問URL in command
把post-receive.bat放在git hooks目錄下。
1 @ echo off 2 set CI_JOB_NAME=CI-Test 3 set JENKINS_BUILD_API=http://localhost:8080/job/%CI_JOB_NAME%/build?token=BUILD //set yourself token value in jenkins config page. 4 ::read post-receive stdin parmameters 5 set /p OLDREV_NEWREV_REFNAME= 6 set OLDREV=%OLDREV_NEWREV_REFNAME:~0,40% 7 set NEWREV=%OLDREV_NEWREV_REFNAME:~41,40% 8 set REFNAME=%OLDREV_NEWREV_REFNAME:~82,999% 9 10 11 set MESSAGE_FILE_TEMP=%CI_JOB_NAME%_COMMIT_MSG_TEMP.txt12 ::Get commit message and retrive RUN_BUILD snippt13 git log --pretty^=format:%%s %OLDREV%..%NEWREV% >%MESSAGE_FILE_TEMP% 14 15 16 findstr /c:RUN_BUILD %MESSAGE_FILE_TEMP%17 if %ERRORLEVEL% == 0 (18 "C:\Program Files (x86)\GnuWin32\bin\wget.exe" ^19 --header="Content-Type:text/plain;charset=UTF-8" ^20 --output-document="-" ^21 --timeout=2 ^22 --auth-no-challenge ^23 --user=Jenkins User ^24 --password=Jenkins password^25 %JENKINS_BUILD_API% >NUL 2>$1) 26 del %MESSAGE_FILE_TEMP%
當push code到git server時就會觸發Jenkins 編譯項目。
post-receive in Windows---git hooks trigger Jenkins to build artifcat