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 是 Jenkins 2.x 核心特性 Pipeline 的腳本,由Groovy語言實現。Jenkinsfile通常是放在項目根目錄,隨項目一塊兒受源代碼管理軟件控制,無需像建立「自由風格"(Jenkins FreeStyle)項目同樣,每次可能須要拷貝不少設置到新項目,提供了一些直接的好處:github
Pipeline支持:Declarative(在Pipeline 2.5中引入)和Scripted Pipeline兩種格式。二者都支持創建Pipeline,二者均可以用於在Web UI中定義一個流水線Jenkinsfile,將Jenkinsfile文件建立並檢查到源代碼控制庫中一般被認爲是最佳作法。web
更多詳細信息參考:玩轉Jenkins Pipeline(大寶魚) 推薦必讀shell
看本小節以前,若是你不熟悉 Jenkinsfile 那麼推薦必定要閱讀,第一小節推薦的文章,裏面介紹了不少基本用法。dom
這裏的實戰主要講聲明式 Jenkinsfile,由於聲明式 Jenkinsfile是 Pipeline 2.5 引入的,比之之前的腳本式會有一些更先進的設計和更快捷的用法,且聲明式Jenkinsfile還兼容腳本式語法。這裏主要講一些博主實際用的過程當中的經驗。函數
pipeline { agent { node { label 'slave-1' } } }
label 指你的集羣結點名稱微服務
pipeline { environment { NUGET_KEY = 'abc' } }
使用:post
env.NUGET_KEY
在sh
裏使用
$NUGET_KEY
例子:
輸出該環境變量
echo "${env.NUGET_KEY}"
sh:
sh 'echo $NUGET_KEY'
這裏要注意在 sh 語句塊裏使用的不一樣。
triggers { githubPush() }
UI上沒有沒有設置github webhook觸發的。腳本設置後,須要到 【系統管理】->【系統設置】裏,手動註冊一下github webhook便可
變量名 | 說明 |
---|---|
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
script 塊裏能夠寫腳本式Jenkinsfile的語法
例子:
stages { stage('Build') { steps { script { result = sh (script: "git log -1|grep 'Release'", returnStatus: true) echo "result: ${result}" } } } }
post { always { script { currentBuild.result = 'NOT_BUILT' } } }
通常放在 POST 語句塊
一些敏感數據,好比帳號密碼,不可能卸載腳本中。
首先新建憑據(Jenkins 地址 /credentials/store/system/domain/_/):
類型選擇 Secret text,Secret 輸出你的 帳號/密碼等。而後記住你設置的ID,待會要用
能夠經過 credentials
函數來獲取
credentials('<憑據id>')
例如
credentials('test')
直接輸出到控制檯也會加密:
def cusversion="Jenkinsfile"
必須放在 pipeline 前面或者 script 語句塊裏面
stage('Deploy') { when { branch "<分支名稱>" } }
Jenkinsfile 語法 https://jenkins.io/doc/book/pipeline/syntax
玩轉Jenkins Pipeline http://www.javashuo.com/article/p-qixdnswx-dr.html