iT邦幫忙

2023 iThome 鐵人賽

DAY 26
0
DevOps

從0開始學習DevOps,並部署CICD至Java專案中系列 第 26

Jenkins Pipeline是什麼?如何建立?

  • 分享至 

  • xImage
  •  

特別提醒:接下來範例的pipeline會需要在流程中使用docker,所以如果是同第15天建立的Jenkins方式的話,會無法執行docker指令,請瀏覽第24天的文章,重新啟動一個新的Jenins容器。(若遇到問題需要排除,可以參照第25天的文章)

  1. 使用jenkinsci/bueocean 掛載 docker.sock
  2. 或 jenkins/jenkins 掛載 docker.sock+ 下載 docker.io

什麼是Pipeline?

Pipeline是Jenkins中的一套插件,可以自行定義要執行的流程與順序,會依序去執行每一個步驟要求要做的事項。

前面幾篇的文章我們使用「Build Steps」新增很多個區塊,來去執行我們期望build之後,依序要做的事項,並一個一個配置不同區塊要輸入的東西、以及要做的事項指令,而Jenkins Pipeline不同之處是,只需要使用一個Pipeline script,就可以從中去制定所有要做的事項以及順序,會依照「stage」區塊去區分不同的事件內容。

Pipeline Script 的基本架構

  • 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 Syntax說明

    pipeline {   
        agent any   
        stages {   
                stage ('Build') {   
    							steps {
    								echo '執行build'
    								...
    							}   
                }
                stage ('Test') {   
    							steps {
    								echo '執行test'
    								...
    							}     
                }
    			    }
    			}
    

開始創建一個Jenkins Pipeline

新增一個專案的Pipeline項目

https://ithelp.ithome.com.tw/upload/images/20231011/20162058aqgZq8rlzK.png

有兩種創建方式

  1. 直接使用 Pipeline script,於下方新增script
  2. 使用SCM,可以從Git上拉取JenkinsFile檔案讀取script運行。

https://ithelp.ithome.com.tw/upload/images/20231011/20162058UxI1exqxBF.png

使用SCM的方式從GitHub拉取

https://ithelp.ithome.com.tw/upload/images/20231011/20162058RN12eBQGNU.png

https://ithelp.ithome.com.tw/upload/images/20231011/201620589kYpNvGG6D.png

於專案中撰寫Jenkinsfile Push 到Github

先測試能不能順利拉取成功,並且產生pipeline

pipeline{
  agent any
  
  stages {
    stage('拉取git-hub 程式') {
      steps {
				// 待放指令
      }
    }
    stage('通過maven構建項目') {
      steps {
				// 待放指令
      }
    }
    stage('通過sonarqube做代碼檢測') {
      steps {
				// 待放指令
      }
    }
    stage('通過Docker構建image') {
      steps {
				// 待放指令
      }
    }
    stage('將image推送到harbor') {
      steps {
				// 待放指令
      }
    }
  }
}

https://ithelp.ithome.com.tw/upload/images/20231011/20162058lmJtMdWTCg.png

更多的Jenkins使用說明

下一則會說明使用Jenkins pipeline 完整的CI實作流程,以及遇到問題時的排解方式。


上一篇
轉換容器,使用jenkinsci/bueocean image啟動Jenkins版本不相符問題(現有容器升級版本)
下一篇
CI:建立Jenkins Pipeline結合專案項目:Github pull / package / SonarQube/Docker build / push Harbor
系列文
從0開始學習DevOps,並部署CICD至Java專案中30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言