##什麼是jenkins 請參看這個連接java
pipeline就是一套運行於jenkins之上的工做流框架,將本來獨立運行於單個或者多個節點的任務鏈接起來,實現單個任務難以完成的複雜發佈流程,pipeline的實現方式是一套groovy DSL,任何發佈流程均可以表述爲一段groovy腳本,而且jenkins支持從代碼庫直接讀取腳本,從而實現pipeline as code的理念。node
##pipeline功能:linux
##pipeline的基本概念git
stage是一個邏輯分組的概念,是能夠跨多個node的
。##熟悉jenkins的術語github
##pipeline對jenkins版本的要求docker
##安裝pipeline插件及其周邊插件windows
##pipeline with SCMbash
##jenkins的docker demo 能夠用docker安裝一個docker版的jenkins,這是連接地址框架
##建立一個pipelinemaven
node { echo 'Hello from Pipeline' }
Started by user anonymous [Pipeline] echo Hello from Pipeline [Pipeline] End of Pipeline Finished: SUCCESS
##並行執行
parallel 'integration-tests':{ node('mvn-3.3'){} }, 'functional-tests':{ node('selenium'){} }
##使用片斷生成器
##添加tools
node { git url: 'https://github.com/joe_user/simple-maven-project-with-tests.git' def mvnHome = tool 'M3' sh "${mvnHome}/bin/mvn -B verify" }
注意
:sh是在linux或類unix系統上,而在windows上表示爲
bat "${mvnHome}\\bin\\mvn -B verify"
##一個java環境下的Maven自動化構建流程
##groovy語法的pipeline配置
git([url: 'https://github.com/joe_user/simple-maven-project-with-tests.git', branch: 'master'])
通常的,在step只有一個參數時,你能夠省略參數的名稱,如:
sh 'echo hello'
其原意爲
sh([script: 'echo hello'])
##管理環境變量
node { git url: 'https://github.com/joe_user/simple-maven-project-with-tests.git' def mvnHome = tool 'M3' env.PATH = "${mvnHome}/bin:${env.PATH}" sh 'mvn -B verify' }
mvn
就不須要完整的路徑。##也能夠添加爲一個局部的環境變量
node { git url: 'https://github.com/jglick/simple-maven-project-with-tests.git' withEnv(["PATH+MAVEN=${tool 'M3'}/bin"]) { sh 'mvn -B verify' } }
##收集測試結果
node { git 'https://github.com/joe_user/simple-maven-project-with-tests.git' def mvnHome = tool 'M3' sh "${mvnHome}/bin/mvn -B -Dmaven.test.failure.ignore verify" archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true junit '**/target/surefire-reports/TEST-*.xml' }
##pipeline一些具體的實例 請參考這個連接jenkins pipeline example