将批处理变量添加到groovy email-ext管道中



不是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", "")

相关内容

  • 没有找到相关文章

最新更新