jenkins pipeline如何实现事件等待(waitUntil)
需求:我需要等待docker镜像上传到镜像仓库之后再进行一些操作,所以我需要做一个监听等待的方法
这里先准备一个函数,用来请求镜像地址,获取返回状态
@NonCPS
def get_responseCode(){
def url = "https://<docker registry url>"
def urlObject = new URL(url)
def connection = urlObject.openConnection()
def responseCode = connection.responseCode
return connection.responseCode
}
解决方案:两种方式
方式一: 用递归的方式实现,这里先去请求镜像链接,如果返回200,做下一步,如果没有的话就等待1分钟之后再次判断,直到能请求到镜像
note: 在调用处最好加上超时设置 timeout(time: 2, unit: 'MINUTES') , 以免job无限循环执行
def do_after_image_built(){
def responseCode = get_responseCode()
if (responseCode == 200) {
echo "do something"
} else {
echo "Waiting for image ready"
sleep time: 1, unit: 'MINUTES'
do_after_image_built()
}
}
方式二: jenkins pipeline waitUntil 关键字,这个原理类似递归,返回true时结束,返回false时会自动重试
def do_after_image_built(){
waitUntil {
def responseCode = get_responseCode()
if (responseCode == 200) {
echo "do something"
return true
} else {
echo "Waiting for image ready"
sleep time: 1, unit: 'MINUTES'
return false
}
}
}

浙公网安备 33010602011771号