pipeline 的基本语法知识

  1. pipeline{          #声明流水线的特定语法,包含流水线所有的内容       
        agent any         #特定语法,执行区和工作区.为流水线的执行分配一个jenkins的节点
        options{          #定义选项
            buildDiscarder(logRotator(numToKeepStr: '10') #保留最新的10个构建日志
            disableConcurrentBuilds()  #规定同一时刻只允许一个pipeline运行
            retry(4)   #失败之后可以尝试4次
            timeout(time:10, unit: 'HOURS') #超时10分钟
        }
        stages{       #定义阶段组
            stage('demo'){		#定义demo阶段
                steps{				#定义步骤
                    sh 'echo hello'
                }
            }
        }
    }
    
  • pipeline{ 				#声明流水线的特定语法,包含pipeline所有的内容
        agent none			#声明流水线的执行分配一个jenkins的节点
        stages{				#定义阶段组        
        	stage('stash'){    #定义stash阶段
                agent { label "master" }  #规定pipeline在master上节点运行
                steps{ 			#定义步骤
                    writeFile file: "a.txt", text: "$BUILD_NUMBER" #将"$BUILD_NUMBER的内容输入到a.txt中
                    stash name: "abc", includes: "a.txt"  #将a.txt文件保存起来给共同构建的其他步骤或者阶段使用,给他加上标识abc.
                }
            }
            stage('unstash'){  		#定义unstash的阶段
                agent { label "node" }   #规定pipeline运行在node的节点上
                steps{		#定义步骤
                    script{		#定义脚本区域	
                        unstash("abc")		#取出stash保存
                        def content = readFile("a.txt")  /#定义变量content
                        echo "${content}" 	#调用变量
                    }
                }
            }
        }
    }					
    
pipeline{			#声明流水线的特定语法,包含pipeline的所有内容
    agent any			#为流水线执行分配一个jenkins的节点
    stages{				#定义阶段
        stage('stash'){			#定义stash的阶段
            steps{				#定义步骤
                timeout(50){ 	#定义闭包运行步骤超时时间50s
                    waitUntil{	#一直循环运行闭包内容,直到return true
                        script{  	#定义脚本
                            def r = sh script: 'curl http://xxx', returnStatus: true   #定义变量r等于curl
                            return (r == 0) 	#r=0,跳出闭包
                        }
                    }
                }
                retry(10){  #失败之后可以尝试10次
                    script{        #定义脚本内容
                        sh script: 'curl http://xxx', returnStatus: true   #执行脚本
                    }
                }
                sleep(20)  //休眠的时间,暂停pipeline 20s
            }
        }
    }
    post{    #定义pipeline最后执行的一组任务
        always{   #规定pipeline的完成状态
            echo "结束job"		#输出"结束job"
        }
    }
}
pipeline{		#声明流水线的特定语法,包含pipeline的所有内容
    agent any		#声明流水线的特定语法,给jenkins分配的一个节点
    triggers{		#定义如何触发pipeline
        upstream(upstreamProjects: 'job1,job2', threshold: hudson.model.Result.SUCCESS) #当上游的job1和job2运行成功时,自动触发
    }
    stages{		#定义阶段组
        stage('pre deploy'){ 		#定义pre deploy组
            steps{		#定义步骤
                script{		#定义脚本
                    BRANCHES = sh  returnStdout: true, script: 'git branch -r | grep -v HEAD > out.txt; git tag >> out.txt; cat out.txt;'
#脚本的内容,过滤,采用正则,将git tag 的内容输出重定向到文件内部,查看内容,定义变量,值是分支列表
                    dataMap = input message: '准备发布到哪个环境', ok: '确定', parameters: [choice(choices: ['dev', 'sit', 'prod'], description: '部署环境', name: 'ENV'), choice(choices: "${BRANCHES}", description: '分支', name: 'TAG')], submitterParameter: 'APPROVER'
                }   #定义变量
            }
        }
        stage("演示一下"){		#定义阶段
            steps{				#定义步骤
                echo "${dataMap['APPROVER']}"  #输出messages
                echo "${dataMap['ENV']}"
                #用户选择部署环境
                echo "${dataMap['TAG']}"
                #用户选择分支
            }
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值