最基本的语法包罗
- pipeline:全部有用的声明式流水线必须包罗在一个 pipeline 块中
- stages:包罗一系列一个或多个stage指令
- stage:stage包罗在stages中举行,好比某个阶段
- steps:在阶段中具体得实行操作,一个或多个步骤
agent
指定了整个流水线特定的机器,好比多台slave节点,可以被定义在pipeline块顶层也可以根据stage层定义利用
(jenkins提供比较常用的流水线语法天生,输入对应的参数会主动生产)
- any:在任意可用署理上实行流水线阶段。agent any
- label:在设置标签得jenkins环境中可用署理上实行。agent {label ‘my slave’}
- node:agent { node { label ‘labelName’ } } 和 agent { label ‘labelName’ } 一样, 但是 node 答应额外的选项 (好比 customWorkspace )
pipeline定义:
- pipeline {
- agent {
- label 'test1'
- }
- stages {
- stage('Hello') {
- steps {
- echo 'Hello World'
- }
- }
- }
- }
复制代码 stage阶段定义:
- pipeline {
- agent any
- stages {
- stage('Hello') {
- agent {
- label 'test1'
- }
- steps {
- echo 'Hello World'
- }
- }
- }
- }
复制代码 post
post部分定义一个或多个steps,这些阶段根据流水线完成情况而运行
- always:无论流水线完成状态如何,都继承运行
- changed:当前流水线完成状态与之前差别时,运行该步骤
- failure:当前流水线完成状态失败时,运行该步骤
- success:当前流水线完成状态乐成时,运行该步骤
- unstable:当前流水线完成状态不稳固时,运行该步骤
- aborted:当前流水线完成状态停止时,运行该步骤
- pipeline {
- agent any
- stages {
- stage('Hello') {
- steps {
- echo 'Hello World'
- //echox 'hello world' (失败时)
- }
- }
- }
- post {
- always {
- echo "无论如何都运行"
- }
- failure {
- echo "失败后运行"
- }
- success {
- echo "执行成功后运行"
- }
- aborted {
- echo "异常中断运行"
- }
- }
- }
复制代码 模拟差别状态
always + success
always + aborted
always + failure
stages
包罗一个或多个stage指令,至少包罗一个
stage
一个stage标识一个阶段
steps
定义一些列一个或多个步骤操作
- pipeline {
- agent any
- stages {
- stage('Hello') {
- steps {
- echo 'Hello World'
- sh 'date'
- sh 'pwd'
- }
- }
- }
- }
复制代码 environment
定义为全部步骤的环境变量,全局变量/局部变量取决于environment在流水线的谁人位置
示例
- pipeline {
- agent any
- environment {
- CC = '全局变量'
- }
- stages {
- stage('Hello') {
- environment {
- VV = '局部变量'
- }
- steps {
- echo "this is ${CC}"
- echo "this is ${VV}"
- }
- }
- }
- }
复制代码 结果
options
答应从流水线内部设置特定的选项,好比timestamps
- disableConcurrentBuilds:禁止并发构建
- skipStagesAfterUnstable:构建状态不稳固时,跳过
- timeout:运行超时时间
- retry:失败时,重新构建的次数
- timestamps:控制台时间输出
- ansiColor:日记输出中启用ANSI颜色代码的支持
示例
- pipeline {
- agent any
- options {
- 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"
- }
- }
- }
- }
复制代码 结果
parameters
提供用户在触发流水线时应该提供的参数列表,参数化构建
- string:字符串范例参数
- booleanParam:布尔参数
- choice:从预定义选项列表中选择
- password:密码参数
示例
- pipeline {
- agent any
- parameters {
- string (defaultValue: 'master', description: '主分支区分', name: 'BRANCH_NAME')
- choice (choices: ['dev', 'prod', 'pre'], description: '环境区分', 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"
- }
- }
- }
- }
- }
复制代码 结果
triggers
定义流水线被重新触发的主动化方式
- cron:实行隔断,雷同任务筹划
- pollSCM:在设置隔断中,jenkins会查抄新的源代码更新,如果更新,会被触发
- upstream:其他工程构建后触发
cron示例
- pipeline {
- agent any
- triggers {
- cron 'H(29-30) */4 * * * '
- }
- stages {
- stage('Example') {
- steps {
- echo 'Hello World'
- }
- }
- }
- }
复制代码 upstream示例
- pipeline {
- agent any
- triggers {
- upstream 'ceshi-pip'
- }
- stages {
- stage('Example') {
- steps {
- echo '当ceshi-pip任务执行后,触发我自动执行'
- }
- }
- }
- }
复制代码 pollSCM示例
- pipeline {
- agent any
- triggers {
- 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 "实际部署步骤,如执行脚本部署等操作"
- }
- }
- }
- }
复制代码 tools
定义主动安装和放置PATH的工具一部分,根据全局工具设置选项自定义选择(比方差别业务需要差别的jdk8大概jdk11)如果 agent none 指定,则忽略该操作
示例
- pipeline {
- agent any
- tools {
- jdk 'openjdk11.0.18'
- maven 'maven1'
- }
- stages {
- stage('Example') {
- steps {
- sh 'mvn --version'
- sh 'java -version'
- }
- }
- }
- }
复制代码 when
指令答应流水线根据给定的条件决定是否实行该阶段。when必须包罗一个条件,当包罗多个条件时,全部子条件必须返回true才会实行
- branch:用于查抄当前构建的分支是否与指定的分支模式匹配时实行
- environment:用于查抄环境变量是否满意给定的名称和值。如果环境变量存在且值匹配时实行
- not:用于反转另一个条件的结果。如果内部条件不满意(即返回false)时实行
- allOf:用于组合多个条件,只有当全部子条件都满意时(即都返回true)时实行
- anyOf:用于组合多个条件,但与allOf差别,只要至少一个子条件满意(即返回true),就会实行
bracnch示例
- pipeline {
- agent any
- stages {
- stage('build on master') {
- when {
- branch 'master'
- }
- steps {
- echo '构建为master分支时执行' //跳过执行
- }
- }
- }
- }
复制代码 environment示例
- pipeline {
- agent any
-
- stages {
- stage('deploy to prod') {
- environment {
- DEPLOY_X = 'dev'
- }
- when {
- environment name: 'DEPLOY_X', value: 'prod'
- }
- steps {
- echo '当变量参数为prod环境时执行' //跳过执行
- }
- }
- }
- }
复制代码 not示例
- pipeline {
- agent any
- environment {
- DEPLOY_X = "dev"
- }
-
- stages {
- stage('not build on master') {
- when {
- not {
- environment name: 'DEPLOY_X', value: 'prod'
- }
- }
- steps {
- echo '当变量参数不为prod环境时执行' //会执行
- }
- }
- }
- }
复制代码 allOf 示例
- pipeline {
- agent any
- environment {
- DEPLOY_X = "prod"
- }
-
- stages {
- stage('not build on master') {
- when {
- allOf {
- environment name: 'DEPLOY_X', value: 'prod'
- not {
- branch 'master'
- }
- }
- }
- steps {
- echo '当环境变量等于prod 和 分支不属于master时执行(即所有条件都满足)'//会执行
- }
- }
- }
- }
复制代码 anyOf 示例
- pipeline {
- agent any
- environment {
- DEPLOY_X = "prod"
- }
-
- stages {
- stage('not build on master') {
- when {
- anyOf {
- branch 'master'
- environment name: 'DEPLOY_X', value: 'prod'
- }
- }
- steps {
- echo '当环境变量等于prod 或者 分支属于master时执行(即所有条件满足一项即可)' //会执行
- }
- }
- }
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |