Pipeline簡介
1 )概念
Pipeline,簡單來說,就是一套運行在 Jenkins 上的工作流框架,將原來獨立運行於單個或者多個節點
的任務連接起來,實現單個任務難以完成的復雜流程編排和可視化的工作。
2)使用Pipeline有以下好處(來自翻譯自官方文檔):
代碼:Pipeline以代碼的形式實現,通常被檢入源代碼控制,使團隊能夠編輯,審查和迭代其傳送流
程。 持久:無論是計划內的還是計划外的服務器重啟,Pipeline都是可恢復的。 可停止:Pipeline可接
收交互式輸入,以確定是否繼續執行Pipeline。 多功能:Pipeline支持現實世界中復雜的持續交付要
求。它支持fork/join、循環執行,並行執行任務的功能。 可擴展:Pipeline插件支持其DSL的自定義擴
展 ,以及與其他插件集成的多個選項。
3)如何創建 Jenkins Pipeline呢?
Pipeline 腳本是由 Groovy 語言實現的,但是我們沒必要單獨去學習 Groovy
Pipeline 支持兩種語法:Declarative(聲明式)和 Scripted Pipeline(腳本式)語法
Pipeline 也有兩種創建方法:可以直接在 Jenkins 的 Web UI 界面中輸入腳本;也可以通過創建一
個 Jenkinsfile 腳本文件放入項目源碼庫中(一般我們都推薦在 Jenkins 中直接從源代碼控制(SCM)
中直接載入 Jenkinsfile Pipeline 這種方法)。
安裝Pipeline插件
Manage Jenkins->Manage Plugins->可選插件
安裝插件后,創建項目的時候多了 “流水線”類型
Pipeline語法快速入門
1)Declarative聲明式-Pipeline
創建項目
stages :代表整個流水線的所有執行階段。通常stages只有1個,里面包含多個stage
stage :代表流水線中的某個階段,可能出現n個。一般分為拉取代碼,編譯構建,部署等階段。
steps:代表一個階段內需要執行的邏輯。steps里面是shell腳本,git拉取代碼,ssh遠程發布等任意內容。
編寫一個簡單聲明式Pipeline:
pipeline { agent any stages { stage('拉取代碼') { steps { echo '拉取代碼' } } stage('編譯構建') { steps { echo '編譯構建' } } stage('項目部署') { steps { echo '項目部署' } } } }
2)拉取Gitlab上代碼
pipeline { agent any stages { stage('拉取代碼') { steps { checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'f12d9980-c5a3-499a-9872-e02c325758a6', url: 'git@47.111.232.56:topcheer_group/web_demo.git']]]) } } stage('編譯打包') { steps { sh label: '', script: 'mvn clean package' } } stage('項目部署') { steps { deploy adapters: [tomcat8(credentialsId: '1ef92d74-e676-457d-87fb-eac48161f91b', path: '', url: 'http://47.110.91.150:8080/')], contextPath: null, war: 'target/*.war' } } } }
其中的代碼,可以在直接用片段生成器
結果顯示
Pipeline Script from SCM
剛才我們都是直接在Jenkins的UI界面編寫Pipeline代碼,這樣不方便腳本維護,建議把Pipeline腳本放
在項目中(一起進行版本控制)
1)在項目根目錄建立Jenkinsfile文件,把內容復制到該文件中
2)在項目中引用該文件