手機(jī)ppt制作軟件站群seo技巧
最基本的語法包含
- pipeline:所有有效的聲明式流水線必須包含在一個 pipeline 塊中
- stages:包含一系列一個或多個stage指令
- stage:stage包含在stages中進(jìn)行,比如某個階段
- steps:在階段中具體得執(zhí)行操作,一個或多個步驟
agent
指定了整個流水線特定的機(jī)器,比如多臺slave節(jié)點(diǎn),可以被定義在pipeline塊頂層也可以根據(jù)stage層定義使用
(jenkins提供比較常用的流水線語法生成,輸入對應(yīng)的參數(shù)會自動生產(chǎn))
- any:在任意可用代理上執(zhí)行流水線階段。agent any
- label:在配置標(biāo)簽得jenkins環(huán)境中可用代理上執(zhí)行。agent {label ‘my slave’}
- node:agent { node { label ‘labelName’ } } 和 agent { label ‘labelName’ } 一樣, 但是 node 允許額外的選項(xiàng) (比如 customWorkspace )
pipeline定義:
pipeline {agent {label 'test1'}stages {stage('Hello') {steps {echo 'Hello World'}}}
}
stage階段定義:
pipeline {agent anystages {stage('Hello') {agent {label 'test1'}steps {echo 'Hello World'}}}
}
post
post部分定義一個或多個steps,這些階段根據(jù)流水線完成情況而運(yùn)行
- always:無論流水線完成狀態(tài)如何,都繼續(xù)運(yùn)行
- changed:當(dāng)前流水線完成狀態(tài)與
之前不同
時,運(yùn)行該步驟 - failure:當(dāng)前流水線完成狀態(tài)
失敗
時,運(yùn)行該步驟 - success:當(dāng)前流水線完成狀態(tài)
成功
時,運(yùn)行該步驟 - unstable:當(dāng)前流水線完成狀態(tài)
不穩(wěn)定
時,運(yùn)行該步驟 - aborted:當(dāng)前流水線完成狀態(tài)
中斷
時,運(yùn)行該步驟
pipeline {agent anystages {stage('Hello') {steps {echo 'Hello World'//echox 'hello world' (失敗時)}}}post {always {echo "無論如何都運(yùn)行"}failure {echo "失敗后運(yùn)行"}success {echo "執(zhí)行成功后運(yùn)行"}aborted {echo "異常中斷運(yùn)行"}}
}
模擬不同狀態(tài)
always + success
always + aborted
always + failure
stages
包含一個或多個stage指令,至少包含一個
stage
一個stage標(biāo)識一個階段
steps
定義一些列一個或多個步驟操作
pipeline {agent anystages {stage('Hello') {steps {echo 'Hello World'sh 'date'sh 'pwd'}}}
}
environment
定義為所有步驟的環(huán)境變量,全局變量/局部變量取決于environment在流水線的那個位置
示例
pipeline {agent anyenvironment {CC = '全局變量'}stages {stage('Hello') {environment {VV = '局部變量'}steps {echo "this is ${CC}"echo "this is ${VV}"}}}
}
結(jié)果
options
允許從流水線內(nèi)部配置特定的選項(xiàng),比如timestamps
- disableConcurrentBuilds:禁止并發(fā)構(gòu)建
- skipStagesAfterUnstable:構(gòu)建狀態(tài)
不穩(wěn)定
時,跳過 - timeout:運(yùn)行超時時間
- retry:失敗時,重新構(gòu)建的次數(shù)
- timestamps:控制臺時間輸出
- ansiColor:日志輸出中啟用ANSI顏色代碼的支持
示例
pipeline {agent anyoptions {ansiColor('xterm')disableConcurrentBuilds()retry(3)timeout(time: 30, unit: 'SECONDS')timestamps()skipStagesAfterUnstable()}stages {stage('Hello') {steps {echo "hello world"echo "\033[32mThis text is green\033[0m"}}}
}
結(jié)果
parameters
提供用戶在觸發(fā)流水線時應(yīng)該提供的參數(shù)列表,參數(shù)化構(gòu)建
- string:字符串類型參數(shù)
- booleanParam:布爾參數(shù)
- choice:從預(yù)定義選項(xiàng)列表中選擇
- password:密碼參數(shù)
示例
pipeline {agent anyparameters {string (defaultValue: 'master', description: '主分支區(qū)分', name: 'BRANCH_NAME')choice (choices: ['dev', 'prod', 'pre'], description: '環(huán)境區(qū)分', name: 'ENVIRONMENT')}stages {stage('Example') {steps {checkout scmGit(branches: [[name: '${BRANCH_NAME}']], extensions: [], userRemoteConfigs: [[credentialsId: 'ae008f10-597f-4332-b2f7-790c9b01074e', url: 'https://gitee.com/liujiangxu/dubbo-demo-web.git']])}}stage('deploy') {steps {script {echo "Deploying to ${ENVIRONMENT} environment"}}} }
}
結(jié)果
triggers
定義流水線被重新觸發(fā)的自動化方式
- cron:執(zhí)行間隔,類似任務(wù)計(jì)劃
- pollSCM:在設(shè)置間隔中,jenkins會檢查新的源代碼更新,如果更新,會被觸發(fā)
- upstream:其他工程構(gòu)建后觸發(fā)
cron示例
pipeline {agent anytriggers {cron 'H(29-30) */4 * * * '}stages {stage('Example') {steps {echo 'Hello World'}}}
}
upstream示例
pipeline {agent anytriggers {upstream 'ceshi-pip'}stages {stage('Example') {steps {echo '當(dāng)ceshi-pip任務(wù)執(zhí)行后,觸發(fā)我自動執(zhí)行'}}}
}
pollSCM示例
pipeline {agent anytriggers {pollSCM '* * * * *'}stages {stage('checkout') {steps {checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 'ae008f10-597f-4332-b2f7-790c9b01074e', url: 'https://gitee.com/liujiangxu/dubbo-demo-web.git']])echo "源代碼已更新"}}stage('build') {steps {sh 'mvn clean package -DskipTests=true'}}stage('deploy') {steps {echo "實(shí)際部署步驟,如執(zhí)行腳本部署等操作"}}}
}
tools
定義自動安裝和放置PATH的工具一部分,根據(jù)全局工具配置選項(xiàng)自定義選擇(例如不同業(yè)務(wù)需要不同的jdk8或者jdk11)如果 agent none 指定,則忽略該操作
- maven:編譯環(huán)境
- jdk:java環(huán)境
示例
pipeline {agent anytools {jdk 'openjdk11.0.18'maven 'maven1'}stages {stage('Example') {steps {sh 'mvn --version'sh 'java -version'}}}
}
when
指令允許流水線根據(jù)給定的條件決定是否執(zhí)行該階段。when必須包含一個條件,當(dāng)包含多個條件時,所有子條件必須返回true才會執(zhí)行
- branch:用于檢查當(dāng)前構(gòu)建的分支是否與指定的分支模式匹配時執(zhí)行
- environment:用于檢查環(huán)境變量是否滿足給定的名稱和值。如果環(huán)境變量存在且值匹配時執(zhí)行
- not:用于反轉(zhuǎn)另一個條件的結(jié)果。如果內(nèi)部條件不滿足(即返回false)時執(zhí)行
- allOf:用于組合多個條件,只有當(dāng)所有子條件都滿足時(即都返回true)時執(zhí)行
- anyOf:用于組合多個條件,但與allOf不同,只要至少一個子條件滿足(即返回true),就會執(zhí)行
bracnch示例
pipeline {agent anystages {stage('build on master') {when {branch 'master'}steps {echo '構(gòu)建為master分支時執(zhí)行' //跳過執(zhí)行} } }
}
environment示例
pipeline {agent anystages {stage('deploy to prod') {environment {DEPLOY_X = 'dev'}when {environment name: 'DEPLOY_X', value: 'prod'}steps {echo '當(dāng)變量參數(shù)為prod環(huán)境時執(zhí)行' //跳過執(zhí)行} } }
}
not示例
pipeline {agent anyenvironment {DEPLOY_X = "dev"}stages {stage('not build on master') {when {not {environment name: 'DEPLOY_X', value: 'prod'}}steps {echo '當(dāng)變量參數(shù)不為prod環(huán)境時執(zhí)行' //會執(zhí)行} } }
}
allOf 示例
pipeline {agent anyenvironment {DEPLOY_X = "prod"}stages {stage('not build on master') {when {allOf {environment name: 'DEPLOY_X', value: 'prod'not {branch 'master'}}}steps {echo '當(dāng)環(huán)境變量等于prod 和 分支不屬于master時執(zhí)行(即所有條件都滿足)'//會執(zhí)行} } }
}
anyOf 示例
pipeline {agent anyenvironment {DEPLOY_X = "prod"}stages {stage('not build on master') {when {anyOf {branch 'master'environment name: 'DEPLOY_X', value: 'prod'}}steps {echo '當(dāng)環(huán)境變量等于prod 或者 分支屬于master時執(zhí)行(即所有條件滿足一項(xiàng)即可)' //會執(zhí)行} } }
}