當我們提交代碼到GitHub后,可以在Jenkins上執行構建,但是每次都要動手去執行略顯麻煩,今天我們就來實戰Jenkins的自動構建功能,每次提交代碼到GitHub后,Jenkins會進行自動構建;
原文地址:http://blog.csdn.net/boling_cavalry/article/details/78943061
前期准備工作
進行本章的實戰前,推薦您參照《docker下的Jenkins安裝和體驗》做安裝和體驗的實戰,以便對Jenkins服務有初步了解;
重要前提
- GitHub收到提交的代碼后要主動通知Jenkins,所以Jenkins所在服務器一定要有外網IP,否則GitHub無法訪問,我的Jenkins服務器是部署在騰訊雲的雲主機上,帶有外網IP;
- 本次實戰要提交源碼到GitHub,所以您需要有一個GitHub號,並在上面創建工程;
demo工程源碼
本次用來在Jenkins上構建的工程是個springboot的web工程,地址是:git@github.com:zq2599/jenkinsdemo.git,用瀏覽器訪問的地址是:https://github.com/zq2599/jenkinsdemo.git;
代碼很簡單,只有一個controller,接收http請求返回一個字符串,如下所示:
@RestController public class Hello { @RequestMapping("/") public String sayHello(){ return "3. Hello jenkins, " + new Date(); } }
您需要在自己的GitHub創建一個項目,源碼可以參照上述demo工程的源碼;
實戰步驟梳理
本次整個實戰過程依次為如下步驟:
1. GitHub上准備一個spring boot的web工程;
2. GitHub上配置Jenkins的webhook地址;
3. 在GitHub上創建一個access token,Jenkins做一些需要權限的操作的時候就用這個access token去鑒權;
4. Jenkins安裝GitHub Plugin插件;
5. Jenkins配置GitHub訪問權限;
6. Jenkins上創建一個構建項目,對應的源碼是步驟1中的web工程;
7. 修改web工程的源碼,並提交到GitHub上;
8. 檢查Jenkins的構建項目是否被觸發自動構建,構建成功后,下載工程運行,看是不是基於最新的代碼構建的;
webhook地址
webhook是通知Jenkins時的請求地址,用來填寫到GitHub上,這樣GitHub就能通過該地址通知到Jenkins;
假設Jenkins所在服務器的地址是:192.168.0.1,端口為8080,那么webhook地址就是http://192.168.0.1:8080/github-webhook
再次提醒,上述地址必須是外網也能訪問的,否則GitHub無法訪問到Jenkins;
配置GitHub
- 登錄GitHub,進入要本次構建用到的工程;
- 在工程主頁面點擊右上角的”Settings”,再點擊左側”Webhooks”,然后點擊“Add webhook”,如下圖:
- 如下圖,在”Payload URL”位置填入webhook地址,再點擊底部的”Add webhook按鈕”,這樣就完成webhook配置了,今后當前工程有代碼提交,GitHub就會向此webhook地址發請求,通知Jenkins構建:
生成Personal access tokens
Jenkins訪問GitHub工程的時候,有的操作是需要授權的,所以我們要在GitHub上生成授權的token給Jenkins使用,這就是Personal access tokens,生成步驟如下:
1. 登錄GitHub,進入”Settings”頁面,點擊左下角的”Developer settings”,如下圖:
2. 跳轉到”Developer settings”頁面后,點擊左下角的“Personal access tokens”,如下圖:
3. 跳轉到”Personal access tokens”頁面后,點擊右上角的”Generate new token”按鈕,如下圖:
4. 可能會提示輸入GitHub密碼,輸入后跳轉到創建token的頁面,如下圖所示,輸入title,再勾選”repo”和”admin:repo_hook”,再點擊底部的”Generate token”按鈕,就能產生一個新的access token,將此字符串復制下來,后面jenkins任務中會用到:
Jenkins配置
- GitHub Plugin插件,在”系統管理->管理插件”位置檢查此插件是否已經安裝,沒有的話請先安裝;
- 配置GitHub,點擊“系統管理->系統設置”,如下圖:
- 在系統設置頁面找到”GitHub”,配置一個”GitHub Server”,如下圖,”API URL”填寫”https://api.github.com“,”Credentials”位置如下圖紅框所示,選擇”Add->Jenkins”:
- 彈出的頁面中,”Kind”選擇”Secret text”,”Secret”填入前面在GitHub上生成的Personal access tokens,Description隨便寫一些描述信息,如下圖:
- 填寫完畢后,點擊右側的”Test connection”按鈕,如果信息沒有填錯,顯示的內容如下圖所示:
- 點擊頁面最底部的”保存”按鈕;
GitHub項目的項目主頁和倉庫地址
項目主頁和倉庫地址是不同的,如下圖,紅框1中是項目主頁,點擊紅框2的按鈕后,紅框3中是倉庫地址(要用HTTPS的,不用SSH 的):
項目主頁:https://github.com/zq2599/jenkinsdemo
倉庫地址:https://github.com/zq2599/jenkinsdemo.git
新建構建項目
在Jenkins上新建一個maven構建項目,名為test003,如下圖:
接下來設置test003的配置信息,分為”源碼管理設置”和”構建環境設置”兩部分;
源碼管理設置
上圖中每個紅框的設置如下解釋:
1. 選擇”Git”;
2. “Repository URL”輸入倉庫地址:https://github.com/zq2599/jenkinsdemo.git;
3. “Credentials”創建一個Credentials,Kind選擇”Username with password”,Username輸入GitHub賬號,Password輸入GitHub密碼;
4. “源碼庫瀏覽器”選擇”githubweb”;
5. “URL”輸入項目主頁:https://github.com/zq2599/jenkinsdemo;
6. “構建觸發器”中勾選”GitHub hook trigger for GiTScm polling”;
構建環境設置
如下圖所示,勾選”Use secret text(s) or file(s)”,下面的”Credentials”選擇我們之前配置過的”Personal access tokens”
設置完成后,點擊頁面底部的”保存”按鈕;
修改web工程代碼並提交到GitHub
將GitHub倉庫的代碼clone到本地,做一些修改然后提交到GitHub上,例如我修改了Hello.java中的源碼(修改了sayHello方法的return的字符串的內容),如下所示:
@RestController public class Hello { @RequestMapping("/") public String sayHello(){ //修改返回的字符串的內容 return "abcdefg. Hello jenkins, " + new Date(); } }
提交到GitHub的操作如下圖所示:
Jenkins自動構建
回到Jenkins的test003頁面,可以看到已經開始自動構建了,如下圖:
驗證自動構建結果
- 在test003的頁面,點擊”工作空間”->”工作區”,如下圖:
- 點擊下圖紅框中的”mavendockerplugindemo-0.0.1-SNAPSHOT.jar”,瀏覽器就會下載這個文件:
- 下載成功后,在mavendockerplugindemo-0.0.1-SNAPSHOT.jar所在目錄下執行命令java -jar mavendockerplugindemo-0.0.1-SNAPSHOT.jar,web應用啟動成功,如下圖:
- 瀏覽器輸入localhost:8080,可以看到web應用返回的內容是我們剛剛提交的最新內容,如下圖:
至此,GitHub提交觸發Jenkins自動構建的實戰就完成了,希望能對您搭建持續構建環境有所幫助。