1. 程式人生 > >Jenkins高階篇之Pipeline語法篇-2-第一個Pipeline指令碼練習

Jenkins高階篇之Pipeline語法篇-2-第一個Pipeline指令碼練習

前面一篇,介紹了什麼是Pipeline,和Pipeline的基本概念,和幾個關鍵字的基本含義的介紹,真正的涉及到Pipeline的語法還沒有開始介紹。這篇先來介紹第一個Pipeline程式碼,分別用兩種模式來寫,逐漸開始展開Pipeline的語法學習。

1.前提條件準備

1)準備一個Jenkins環境

我個人有一個VPS,搭建了一個Jenkins,供大家參考。我這個系列的指令碼涉及Pipeline程式碼和全部Jenkins job都會在上面進行測試。但是這個環境,還有不到一年時間過期,大概2019-7月份到期。Jenkins url: http://65.49.216.200:8080/ , 你們可以用這個賬號去登入:anthony/123456

2) Jenkins環境master節點

我這個Jenkins是安裝到一個Linux上,安裝好了Jenkins,還需要安裝Groovy,以及Git,還有後面也需要安裝Python環境。因為Pipleline裡面需要寫一部分Groovy程式碼,所以需要安裝Groovy執行環境,安裝Python也是基於這個原因。

3) 準備一個Github賬號和程式碼倉庫

因為Jenkins每次構建之前一般都需要去check out程式碼,所以我們專案練習程式碼放在github上,後面我使用的程式碼會給出,你們如果需要,可以去folk。

2.在Jenkins上建立一個Pipeline專案

這個可能很多人沒有建立過這個型別,基本上大家之前建立的專案都是自由風格的。參考下面這個圖,建立一個Pipeline Job.(注:安裝Jenkins的嚮導過程中,選擇預設的外掛安裝,就會有Pipeline元件)

3.不整合Github的Pipeline程式碼

這種方式,直接把寫好的Pipeline程式碼拷貝到Pipeline對應的Jenkins頁面上,經常用這個方式來進行本地Debug和單元測試。

選擇上面建立好的這個Pipeline Job,點選Confige, 到達配置介面,點選Pipeline,然後把程式碼帖進去,點選儲存,具體參考下圖。

pipeline {
    agent any 
    stages {
        stage('Build') { 
            steps {
                println "Build" 
            }
        }
        stage('Test') { 
            steps {
                println "Test" 
            }
        }
        stage('Deploy') { 
            steps {
                println "Deploy" 
            }
        }
    }
}

上面這個Pipeline模式就是一個典型的Declarative型別,先不管上面具體語法,我們點選儲存,然後點選Build Now,看看控制檯日誌,會發生什麼。

下面我們繼續來看看Script模式,修改並黏貼如下程式碼。

點選儲存,然後點選Build Now,繼續看看#2的job的控制檯。

從日誌結果來看,第二種Scripted Pipeline程式碼也成功執行,得到了正確的結果。

4.整合Github,把Pipeline程式碼放到Jenkinsfile檔案中

這種方式才是開發中使用的場景,任何Pipeline和業務程式碼一樣需要新增到程式碼倉庫。這裡我們模仿git,只寫Declarative的模式,以後我們都使用Declarative模式的Pipeline程式碼。

專案中只有一個Jenkinsfile文字檔案,裡面寫的是Declarative模式的Pipeline程式碼。下面,繼續使用上面建立好的Job,到Configure頁面,選擇如下圖的git拉取Pipeline程式碼。

點選儲存,然後點選Build Now,點選#3的控制檯,看看日誌。

這種程式碼拉取,執行檔案的方式,執行結果也是成功,以後我們基本上都是使用這個方式。

回到Jenkins job上看看整體構建情況,以下這種圖就是Pipeline的優點之一,每個stage或者叫階段都幹了什麼事情,是成功還是失敗,每個stage都可以看到日誌。

這篇就學習到這裡,篇幅太長了,具體程式碼解釋和語法含義,下一篇來介紹。能成功跑起來,就可以了,剛開始,很多人都玩不了這個程式碼,真不要小瞧了。其實上面程式碼列印語句程式碼用了Groovy的語法,如果你機器沒有安裝Groovy,可能就會報錯,構建失敗。