0
点赞
收藏
分享

微信扫一扫

Jenkins Pipeline 对Job参数的处理


文章目录

  • ​​一、判断参数的值是否为空​​
  • ​​`1.1.脚本内容`​​
  • ​​`1.2.执行结果`​​
  • ​​二、当参数的值是好几个IP地址,该如何提取呢?​​
  • ​​`2.1.脚本`​​
  • ​​`2.2.执行结果`​​
  • ​​三、把Job参数写入到/etc/ansible/hosts文件​​
  • ​​`脚本`​​
  • ​​`执行效果`​​

一、判断参数的值是否为空

Job使用参数化构建,配置参数DOCKER_HOST和DB_HOST,现在需在groovy脚本中判断它们的值是否为空
Jenkins Pipeline 对Job参数的处理_ip地址

​1.1.脚本内容​

#!groovy

def jobParamsList = ['DOCKER_HOST','DB_HOST'] //把参数保存到列表中
for(param in jobParamsList) //遍历列表
{
if(! this."${param}")
{
throw new Exception("The param : ${param} is empty, please check...")
}
}

解释:

this.DOCKER_HOST    #提取参数DOCKER_HOST的值
throw new Exception #抛出异常

​1.2.执行结果​

Jenkins Pipeline 对Job参数的处理_pipeline_02

二、当参数的值是好几个IP地址,该如何提取呢?

Jenkins Pipeline 对Job参数的处理_ip地址_03

​2.1.脚本​

#!groovy

def dockerIpList=this.DOCKER_HOST.split(",") //以逗号进行分割,并存入列表中
for (i=0;i<dockerIpList.size();i++)
{
println dockerIpList[i]
}

解释:

dockerIpList.size()   #获取列表的长度

​2.2.执行结果​

Jenkins Pipeline 对Job参数的处理_pipeline_04

三、把Job参数写入到/etc/ansible/hosts文件

Jenkins Pipeline 对Job参数的处理_ip地址_05

​脚本​

#!groovy

def filePath = "/etc/ansible/hosts"
def backupPath = "/etc/ansible/host_bak"
def logTime = new Date().format('yyyyMMddHHmmss') //提取当前时间戳
if(! fileExists(backupPath)) {
sh "mkdir ${backupPath}"
}

if(fileExists(filePath)) {
sh "mv ${filePath} ${backupPath}/hosts_bak_${logTime}" //执行Shell命令
}

outFile = new File(filePath) //把文件转成一个File类

def dockerIpList=this.DOCKER_HOST.split(",") //以逗号进行分割,并存入列表中
outFile.append('['+'DOCKER_HOST'+']\n') //如果文件不存在,会创建
for (ip in dockerIpList) {
outFile.append(ip+'\n')
}

​执行效果​

Jenkins Pipeline 对Job参数的处理_把参数写入到文件_06


举报

相关推荐

0 条评论