[ DevOps ] Jenkins 基本設定及 Pipeline 腳本教學

前一篇文章主要有介紹 Jenkins 安裝。因此本篇主要會描述如何操作 Jenkins 服務、撰寫 Jenkins 腳本以及執行腳本的方式,並以一個範例實作,包含:從 Git server 取得程式碼並設定 pipeline 執行步驟。

Jenkins 網頁操作說明

1. 新增作業

用於建置你所要執行的工作,包含:不斷的偵測 Git 上是否有新的 Code commit,如有偵測到新的版本即可自動去部署以及可以撰寫 Pipeline 腳本去執行所需的指令等等。

2. 使用者

用於新增可以登入服務的使用者帳號。

3. 建置歷程

可以查看目前建置的所有歷程。

4. 管理 Jenkins

設定 Jenkins 服務參數,包含:服務啟動時的 port、查看系統 log、設定連結的節點等等。

5. 我的視景

點選後可以看到目前有在執行的工作以及執行的狀態。


設定新節點及撰寫執行 Pipeline 腳本

這裡的範例主要是先設定 Jenkins 可以 SSH 連線至一台 CentOS 測試機,接著透過撰寫 Pipeline 腳本,從 Git server 上取得 Source code 並執行該程式碼,待該程式完成後,再去執行下一支程式。

前置準備作業

  1. 安裝好的 Jenkins server
  2. CentOS 6.5 以上版本測試機 or Ubuntu 14.04 以上版本測試機

Step 1. 新增節點

此步驟為設定 Jenkins 可以透過 SSH 連線至測試機的方法。 下圖為按下 Add Credentials 時所跳出的畫面。 完成後按下儲存即設定完成。

Step 2. 新增 Pipeline 作業

此步驟主要為新增一個作業,用於執行自己撰寫的腳本。 新增作業後即可開始寫 Script。

Step 3. 撰寫 Pipeline script

新增作業建置完成後,即可開始撰寫 Script ,首先先介紹 Jenkins pipeline 語法,一般來說我們會將撰寫完成的 Jenkinsfile ,建置一個 Repo 用來管控版本。

Pipeline 的語法是使用 Groovy 撰寫,由多個 stage 所組成,基本上只要透過三個語法,就可以完成,剩下的事情可以交由 Jenkins 幫忙。

  • node: 想像成是一個容器,裝載著你要執行的 Script
  • stage: 該 stage 區塊為此步驟需要執行的內容,Jenkins 會自動將你定義的 stage 名稱產生 Pipeline 視覺化圖形,會把每個 Stage 呈現成獨立的區塊
  • Step: 負責告訴Jenkins你想要做些甚麼
下列第一個範例先呈現 node, stage, echo 的用法
node {  
   stage('Stage 1'){
       echo 'Hello World 1'
   }
   stage('Stage 2'){
       echo 'Hello World 2'
   }
}

將 Script 寫入後按 “儲存” 按鈕

接著點選 “馬上建置” 按鈕,則會開始執行 script

執行完成後,可以看到剛剛撰寫 script 所定義的 stage 已顯示於網頁上,並列出每個 stage 完成的時間

最後從 console 可以看出剛剛執行 script 的訊息

第二個範例 git 的用法

該 script 主要為從 Git clone source code

node {  
   stage('Stage 1'){
       echo 'Hello World 1'
   }
   stage('Stage 2'){
       echo 'Hello World 2'
   }
   stage('checkout'){
       echo 'checkout from gi'
       git url: 'http://140.92.25.64:8888/glchiou/CategoryClassifier.git', branch: 'master'
   }
}

跟第一個範例一樣撰寫完 script 後,按儲存 -> 馬上建置

執行完成後可以看到建置的結果

最後從 console 可以看出剛剛執行 script 的訊息,可以發現已經從 git url 取得 source code

第三個範例 dir, sh 的用法

該 script 主要先在 jenkins 預設路徑下建立一個資料夾,接著再透過 git clone 原始碼,最後利用 mvn 打包此原始碼成一個 jar 檔

至於預設路徑為 Step 1. 新增節點時有設定預設路徑

執行 script

node {  
   stage('Stage 1'){
       echo 'Hello World 1'
   }
   stage('Stage 2'){
       echo 'Hello World 2'
   }
   stage('checkout_build'){ 
        //透過 dir 在預測路徑下建立一個 project 資料夾 
        dir('project'){
            //透過 sh 對 linux 下指令
            sh 'rm -rf *'
            retry(3){
                git url: 'http://140.92.25.64:8888/glchiou/CategoryClassifier.git', branch: 'develop'
            }
            //透過 sh 下 mvn build code 指令
            sh "mvn clean package -DskipTests=true"
        }
    }
}

跟前兩個範例一樣撰寫完 script 後,按儲存 -> 馬上建置

該 script 執行完後,會將 clone 下來的原始碼放置於該路徑下,預設路徑會增加三個子目錄 workspace、test2 (連線節點名稱) 、project (透過 dir script 建立的資料夾)

/var/jenkins/workspace/test2/project

系統環境版本資訊

  • CentOS 7
  • Ubuntu 16.04

Ben Shiue

Having being a full stack engineer. His interests in Node.js, ARM mbed, IoT solutions. Contact us : [email protected]

ALL RIGHTS RESERVED. COPYRIGHT © 2016. Designed and Coded by Makee.io