特別提醒:接下來範例的pipeline會需要在流程中使用docker,所以如果是同第15天建立的Jenkins方式的話,會無法執行docker指令,請瀏覽第24天的文章,重新啟動一個新的Jenins容器。(若遇到問題需要排除,可以參照第25天的文章)
- 使用jenkinsci/bueocean 掛載 docker.sock
- 或 jenkins/jenkins 掛載 docker.sock+ 下載 docker.io
Pipeline是Jenkins中的一套插件,可以自行定義要執行的流程與順序,會依序去執行每一個步驟要求要做的事項。
前面幾篇的文章我們使用「Build Steps」新增很多個區塊,來去執行我們期望build之後,依序要做的事項,並一個一個配置不同區塊要輸入的東西、以及要做的事項指令,而Jenkins Pipeline不同之處是,只需要使用一個Pipeline script,就可以從中去制定所有要做的事項以及順序,會依照「stage」區塊去區分不同的事件內容。
pipeline:最外層一定要使用pipeline包住
pipeline{
...
}
agent:指定在哪一個代理對象上執行。(沒有特別配置就使用 agent any
,會自動找尋可使用的agent)
pipeline{
agent any
}
stages:可在裡面指定每一個步驟的執行區塊(stage),就是pipeline中的每一個環節,你指定要做的事。
pipeline {
agent any
stages {
stage ('Build') {
...
}
stage ('Test') {
...
}
}
}
steps:在stage執行區塊中,你要做的事項有哪些?
echo,會印出你寫的文字在log上,需撰寫在steps內
steps中的執行指令使用 sh…
如何撰寫sh執行指令,到時候創建pipeline後,會有Pipeline Syntax連結可以點選,能夠選擇要執行的事項,會為你產生stage執行指令,再複製貼上即可。
pipeline {
agent any
stages {
stage ('Build') {
steps {
echo '執行build'
...
}
}
stage ('Test') {
steps {
echo '執行test'
...
}
}
}
}
新增一個專案的Pipeline項目
有兩種創建方式
先測試能不能順利拉取成功,並且產生pipeline
pipeline{
agent any
stages {
stage('拉取git-hub 程式') {
steps {
// 待放指令
}
}
stage('通過maven構建項目') {
steps {
// 待放指令
}
}
stage('通過sonarqube做代碼檢測') {
steps {
// 待放指令
}
}
stage('通過Docker構建image') {
steps {
// 待放指令
}
}
stage('將image推送到harbor') {
steps {
// 待放指令
}
}
}
}
下一則會說明使用Jenkins pipeline 完整的CI實作流程,以及遇到問題時的排解方式。