不是groovy或批处理的专业人士,但是这里有
我有一个groovy脚本,其中一小部分发送电子邮件时,某些东西在jenkins管道失败。下面是catch代码,如果出现问题,它会发送电子邮件。
catch (Exception e){
def buildNumber = env.BUILD_NUMBER
def buildurl = env.BUILD_URL
def buildjobname = env.JOB_NAME
bat 'for /f "delims=" %%a in (user_id.txt) do set USER_ID=%%a'
emailext body: "Failure in build number $buildNumber for the job name $buildjobname. See URL for more detail: $buildurl",
subject: "Failure in build number $buildNumber for the job name $buildjobname",
to:
}
正如您所看到的,我有一行执行一些bat shell脚本,其中通过读取文件将user_id内容存储到user_id变量中。现在我想使用USER_ID变量在我的to
属性(像这样:to: USER_ID
),但似乎这不是这样做的方式。
我错过了什么
编辑:我想我必须使用EnvInject插件?在Jenkins管道代码中,您可以使用bat输出来获取userId作为变量。例子:
catch (Exception e){
def buildNumber = env.BUILD_NUMBER
def buildurl = env.BUILD_URL
def buildjobname = env.JOB_NAME
def userId = bat script: 'for /f "delims=" %%a in (user_id.txt) do echo %%a', returnStdout: true
emailext body: "Failure in build number $buildNumber for the job name $buildjobname. See URL for more detail: $buildurl",
subject: "Failure in build number $buildNumber for the job name $buildjobname",
to: "${userId}"
}
我不太确定如何输出您的userId使用bat脚本(更熟悉shell脚本,抱歉),但你得到的想法…
使用a jenkins插件解决
readFile 'user_id.txt'
在groovy中,您可以像这样访问环境变量:
groovy -e "println System.env.LOGNAME"
所以有可能(如果USER_ID是一个环境变量)您可以访问变量的内容,如
to: System.env.USER_ID
但是也许在Jenkins环境中,变量已经存在了?
to: env.USER_ID
?
另一种可能是:
to: new File("user_id.txt").text.replace("n", "")