Jenkins學習筆記第八篇pipeline機制
jenkins pipeline機制:
每一個check-in 都會觸發pipeline的執行,每一個階段的狀態對組內成員都可見 每一個階段都會給一個及時反饋,每一次最後的stable版本都可以完成一次釋出
pipleline專案建立,首先安裝pipeline相關外掛
在建立的第一個pipeline中使用預設給定script:
node {
def mvnHome
stage('Preparation') { // for display purposes
// Get some code from a GitHub repository
git 'https://github.com/jglick/simple-maven-project-with-tests.git'
// Get the Maven tool.
// ** NOTE: This 'M3' Maven tool must be configured
// ** in the global configuration.
mvnHome = tool 'M3'
}
stage('Build') {
// Run the maven build
withEnv(["MVN_HOME=$mvnHome"]) {
if (isUnix()) {
sh '"$MVN_HOME/bin/mvn" -Dmaven.test.failure.ignore clean package'
} else {
bat(/"%MVN_HOME%\bin\mvn" -Dmaven.test.failure.ignore clean package/)
}
}
}
stage('Results') {
junit '**/target/surefire-reports/TEST-*.xml'
archiveArtifacts 'target/*.jar'
}
}
pipeline語法:
agent:定義pipeline執行節點
引數:
必須出現的指令
any 可以使任意agent上執行pipeline
none pipeline將不分配全域性agent 每個stage分配自己的agent
label 指定執行節點的label
node 自定義執行節點配置
指定label
指定customWorkspace
docker 控制目標節點上的docker執行相關內容
pipeline{
agent{
nodee{
label 'master'
customWorkspace "pipelineWorspace"
}
}
}
stages:包含一個或多個stage的序列,pipeline的大部分工作在此執行
必須出現指令
無引數
每個pipeline只有一個stages
stage 包含在stages中,pipeline完成的所有實際工作都需要包含在stage中
triggers 定義了pipeline自動化觸發方式
引數:
cron 接收一個crontab風格的字串來定義pipeline觸發的常規時間
pollScm 接受一個crontab風格的字串來定義jenkins檢查scm源更改的常規時間
,如果存在新的更改,則pipeline將重新觸發
例子:
pipeline{
agent{
node{
label 'master'
customWorkspace 'myworkspace'
}
}
triggers{
cron('H/2 * * * *')
}
parameters{
string(name:'PERSON' ,defaultValue: 'jenkins',description:'輸入字串')
}
}
關於crontab時間格式參考:五段 分 時 日 月 周
H/30 * * * * * 每30分鐘構建一次
H H/2 * * *每兩個小時構建一次
0 8 * * * 每天八點構建一次
0 8,12,22 * * * 每天8,12,22點構建,一天構建3次
H/3 0-23 * * * 每三分鐘構建一次,每天0-23:59執行任務
environment 定義pipeline或stage執行時的環境變數
引數
不是必須出現的命令
無引數
environment{
hlw='hello world'
}
stages{
stage('print environment_1'){
steps{
echo hlw
}
}
stage('print environment_2'){
steps{
sh 'echo ${hlw}'
}
}
}
pipeline{
agent{
node{
label 'master'
customWorkspace 'myworkspace'
}
}
environment{
hlw='hello world'
}
stages{
stage('print environment_1'){
steps{
echo hlw
sleep 5
}
}
stage('print environment_2'){
steps{
sh 'echo ${hlw}'
sleep 5
}
}
}
post{
success{
echo 'sync goodbay'
sleep 5
}
failure{
}
unstable{
}
}
}
options:定義pipeline的專有屬性
引數:
不是必須的指令
buildDiscarder 保持構建的最大個數
disableConcurrentBuilds 不允許並行執行pipeline任務
timeout:pipeline超時時間
retry 失效後,重試整個pipeline生成的所有控制檯輸出時間
skipStageAfterUnstable:一旦構建狀態進入了 unstable 狀態就跳過此stage
pipeline{
agent{
node{
label 'master'
customWorkspace 'pipelineWorkspace'
}
}
option{
buildDiscarder(logRotator(numToKeepStr:'2'))
}
}
parameters定義pipeline的專有引數列表
引數:
不是必須出現的命令
支援資料型別 booleanParam choice credentials file text password
pipeline{
agent{
node{
label 'master'
customWorkspace 'pipelineWorkspace'
}
}
option{
buildDiscarder(logRotator(numToKeepStr:'2'))
}
parameters{
string(name:'PERSON',defaultValue:'',description:'')
}
stages{
stage('Test parameters'){
steps{
echo "Hello ${params.PERSON}"
}
}
}
}
相關文章
- Jenkins 學習筆記Jenkins筆記
- 學習筆記(2)IPC機制筆記
- MySQL 學習筆記(二)MVCC 機制MySql筆記MVC
- OS學習筆記四:同步機制筆記
- JVM學習筆記——類載入機制JVM筆記
- 【python學習筆記】Python反射機制Python筆記反射
- 【讀書筆記】Android的Ashmem機制學習筆記Android
- React學習手冊-React執行機制筆記(二)React筆記
- Redis 學習筆記(四)RDB 和 AOF 持久化機制Redis筆記持久化
- 李沐大佬-動手學深度學習筆記-注意力機制深度學習筆記
- 2020 docker部署Jenkins學習筆記DockerJenkins筆記
- 作業系統的記憶體對齊機制學習筆記作業系統記憶體筆記
- Attention機制全流程詳解與細節學習筆記筆記
- 機率論 學習筆記筆記
- JVM記憶體分配機制與回收策略選擇-JVM學習筆記(2)JVM記憶體筆記
- 《深入理解java虛擬機器》學習筆記6——類載入機制Java虛擬機筆記
- 學習筆記-虛擬機器筆記虛擬機
- AC自動機學習筆記筆記
- AC 自動機學習筆記筆記
- [PyTorch 學習筆記] 2.2 圖片預處理 transforms 模組機制PyTorch筆記ORM
- 統計學習方法筆記-感知機學習方法筆記
- GVM回收機制-筆記筆記
- numpy的學習筆記\pandas學習筆記筆記
- Jenkins+Cobertura程式碼覆蓋率(學習筆記三十七)Jenkins筆記
- 字尾自動機學習筆記筆記
- 期望 與 機率論 學習筆記筆記
- 深度學習 Caffe 記憶體管理機制理解深度學習記憶體
- IT學習筆記筆記
- 學習筆記筆記
- Java筆記-反射機制(一)Java筆記反射
- JS垃圾回收機制筆記JS筆記
- MySQL筆記之Checkpoint機制MySql筆記
- nodejs筆記-模組機制NodeJS筆記
- SDWebImage 快取機制(筆記)Web快取筆記
- Qt 事件機制 學習QT事件
- 飛機的 PHP 學習筆記九:安全PHP筆記
- 飛機的 PHP 學習筆記七:WebPHP筆記Web
- 隨機過程學習筆記——概論隨機筆記