實戰:向GitHub提交代碼時觸發Jenkins自動構建

當我們提交代碼到GitHub後,可以在Jenkins上執行構建,但是每次都要動手去執行略顯麻煩,今天我們就來實戰Jenkins的自動構建功能,每次提交代碼到GitHub後,Jenkins會進行自動構建;

原文地址:http://blog.csdn.net/boling_cavalry/article/details/78943061

前期準備工作

進行本章的實戰前,推薦您參照《docker下的Jenkins安裝和體驗》做安裝和體驗的實戰,以便對Jenkins服務有初步瞭解;

重要前提

  1. GitHub收到提交的代碼後要主動通知Jenkins,所以Jenkins所在服務器一定要有外網IP,否則GitHub無法訪問,我的Jenkins服務器是部署在騰訊雲的雲主機上,帶有外網IP;
  2. 本次實戰要提交源碼到GitHub,所以您需要有一個GitHub號,並在上面創建工程;

demo工程源碼

本次用來在Jenkins上構建的工程是個springboot的web工程,地址是:[email protected]:zq2599/jenkinsdemo.git,用瀏覽器訪問的地址是:https://github.com/zq2599/jenkinsdemo.git; 
代碼很簡單,只有一個controller,接收http請求返回一個字符串,如下所示:

<span style="color:#000000"><code class="language-java"><span style="color:#9b859d !important">@RestController</span>
<span style="color:#000088 !important">public</span> <span style="color:#000088 !important">class</span> <span style="color:#4f4f4f !important">Hello</span> {
    <span style="color:#9b859d !important">@RequestMapping</span>(<span style="color:#009900 !important">"/"</span>)
    <span style="color:#000088 !important">public</span> String <span style="color:#009900 !important">sayHello</span>(){
        <span style="color:#000088 !important">return</span> <span style="color:#009900 !important">"3. Hello jenkins, "</span> + <span style="color:#000088 !important">new</span> Date();
    }
}</code></span>

 

您需要在自己的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

  1. 登錄GitHub,進入要本次構建用到的工程;
  2. 在工程主頁面點擊右上角的”Settings”,再點擊左側”Webhooks”,然後點擊“Add webhook”,如下圖: 
    這裏寫圖片描述
  3. 如下圖,在”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配置

  1. GitHub Plugin插件,在”系統管理->管理插件”位置檢查此插件是否已經安裝,沒有的話請先安裝;
  2. 配置GitHub,點擊“系統管理->系統設置”,如下圖: 
    這裏寫圖片描述
  3. 在系統設置頁面找到”GitHub”,配置一個”GitHub Server”,如下圖,”API URL”填寫”https://api.github.com“,”Credentials”位置如下圖紅框所示,選擇”Add->Jenkins”: 
    這裏寫圖片描述
  4. 彈出的頁面中,”Kind”選擇”Secret text”,”Secret”填入前面在GitHub上生成的Personal access tokens,Description隨便寫一些描述信息,如下圖: 
    這裏寫圖片描述
  5. 填寫完畢後,點擊右側的”Test connection”按鈕,如果信息沒有填錯,顯示的內容如下圖所示: 
    這裏寫圖片描述
  6. 點擊頁面最底部的”保存”按鈕;

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的字符串的內容),如下所示:

<span style="color:#000000"><code class="language-java"><span style="color:#9b859d !important">@RestController</span>
<span style="color:#000088 !important">public</span> <span style="color:#000088 !important">class</span> <span style="color:#4f4f4f !important">Hello</span> {

    <span style="color:#9b859d !important">@RequestMapping</span>(<span style="color:#009900 !important">"/"</span>)
    <span style="color:#000088 !important">public</span> String <span style="color:#009900 !important">sayHello</span>(){
        <span style="color:#880000 !important"><em>//修改返回的字符串的內容</em></span>
        <span style="color:#000088 !important">return</span> <span style="color:#009900 !important">"abcdefg. Hello jenkins, "</span> + <span style="color:#000088 !important">new</span> Date();
    }
}</code></span>

 

提交到GitHub的操作如下圖所示: 
這裏寫圖片描述

Jenkins自動構建

回到Jenkins的test003頁面,可以看到已經開始自動構建了,如下圖: 
這裏寫圖片描述

驗證自動構建結果

  1. 在test003的頁面,點擊”工作空間”->”工作區”,如下圖: 
    這裏寫圖片描述
  2. 點擊下圖紅框中的”mavendockerplugindemo-0.0.1-SNAPSHOT.jar”,瀏覽器就會下載這個文件: 
    這裏寫圖片描述
  3. 下載成功後,在mavendockerplugindemo-0.0.1-SNAPSHOT.jar所在目錄下執行命令java -jar mavendockerplugindemo-0.0.1-SNAPSHOT.jar,web應用啓動成功,如下圖: 
    這裏寫圖片描述
  4. 瀏覽器輸入localhost:8080,可以看到web應用返回的內容是我們剛剛提交的最新內容,如下圖: 
    這裏寫圖片描述

至此,GitHub提交觸發Jenkins自動構建的實戰就完成了,希望能對您搭建持續構建環境有所幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章