Jenkins高級用法 - Jenkinsfile 介紹及實戰經驗

系列目錄

1.Jenkins 安裝
2.Jenkins 集羣
3.Jenkins 持續集成 - ASP.NET Core 持續集成(Docker&自由風格&Jenkinsfile)
4.Jenkins 高級用法 - Pipeline 安裝
5.Jenkins 高級用法 - Jenkinsfile 介紹及實戰經驗
6.Jenkins 高級用法 - Blue Ocean 使用
7.Jenkins 高級用法 - 根據 git commit 控制構建過程
8.Jenkins 高級用法 - 微服務DevOps實戰(ASP.NET Core)html

常見問題:node

1.Jenkins 時區設置
2.Jenkins 沒法捕獲構建腳本錯誤問題git

一.什麼是 Jenkinsfile

Jenkinsfile 是 Jenkins 2.x 核心特性 Pipeline 的腳本,由Groovy語言實現。Jenkinsfile通常是放在項目根目錄,隨項目一塊兒受源代碼管理軟件控制,無需像建立「自由風格"(Jenkins FreeStyle)項目同樣,每次可能須要拷貝不少設置到新項目,提供了一些直接的好處:github

  • Pipeline上的代碼審查/迭代
  • Pipeline的審計跟蹤
  • Pipeline的惟一真實來源,能夠由項目的多個成員查看和編輯。

Pipeline支持:Declarative(在Pipeline 2.5中引入)和Scripted Pipeline兩種格式。二者都支持創建Pipeline,二者均可以用於在Web UI中定義一個流水線Jenkinsfile,將Jenkinsfile文件建立並檢查到源代碼控制庫中一般被認爲是最佳作法。web

aaa

更多詳細信息參考:玩轉Jenkins Pipeline(大寶魚) 推薦必讀shell

二. Jenkinsfile 實戰經驗

看本小節以前,若是你不熟悉 Jenkinsfile 那麼推薦必定要閱讀,第一小節推薦的文章,裏面介紹了不少基本用法。dom

這裏的實戰主要講聲明式 Jenkinsfile,由於聲明式 Jenkinsfile是 Pipeline 2.5 引入的,比之之前的腳本式會有一些更先進的設計和更快捷的用法,且聲明式Jenkinsfile還兼容腳本式語法。這裏主要講一些博主實際用的過程當中的經驗。函數

1.在指定的Jenkins集羣結點上運行

pipeline {
    agent {
        node {
            label 'slave-1'
        }
    }
}

label 指你的集羣結點名稱微服務

2.定義環境變量

pipeline {
    environment {
        NUGET_KEY     = 'abc'
    }
}

使用:post

env.NUGET_KEY

sh裏使用

$NUGET_KEY

例子:

輸出該環境變量

echo "${env.NUGET_KEY}"

sh:

sh 'echo $NUGET_KEY'

這裏要注意在 sh 語句塊裏使用的不一樣。

3.設置 github webhook 觸發器

triggers {
      githubPush()
}

UI上沒有沒有設置github webhook觸發的。腳本設置後,須要到 【系統管理】->【系統設置】裏,手動註冊一下github webhook便可

4.經常使用的預置環境變量

變量名 說明
BRANCH_NAME 當前分支名稱
GIT_COMMIT 當前 commit hash
GIT_PREVIOUS_SUCCESSFUL_COMMIT 上一次構建成功 cimmit hash

示例:

echo "branch: ${env.BRANCH_NAME}"
echo "current SHA: ${env.GIT_COMMIT}"
echo "previous SHA: ${env.GIT_PREVIOUS_SUCCESSFUL_COMMIT}"script

5.script塊

script 塊裏能夠寫腳本式Jenkinsfile的語法

例子:

stages {
        stage('Build') {
            steps {
                script {
                    result = sh (script: "git log -1|grep 'Release'", returnStatus: true) 
                    echo "result: ${result}"
                }
            }
        }
    }

6.設置構建結果

post { always { script { currentBuild.result = 'NOT_BUILT' } } }

通常放在 POST 語句塊

7.敏感數據設置

一些敏感數據,好比帳號密碼,不可能卸載腳本中。

首先新建憑據(Jenkins 地址 /credentials/store/system/domain/_/):

1544687837595

類型選擇 Secret text,Secret 輸出你的 帳號/密碼等。而後記住你設置的ID,待會要用

能夠經過 credentials函數來獲取

credentials('<憑據id>')

例如

credentials('test')

直接輸出到控制檯也會加密:

1544687975228

8.定義變量

def cusversion="Jenkinsfile"

必須放在 pipeline 前面或者 script 語句塊裏面

1544695268853

9.指定分支運行stage

stage('Deploy') {
            when {
                branch "<分支名稱>"
            }
}

三.擴展閱讀

Jenkinsfile 語法 https://jenkins.io/doc/book/pipeline/syntax

玩轉Jenkins Pipeline http://www.javashuo.com/article/p-qixdnswx-dr.html

相關文章
相關標籤/搜索