不是常规或批处理的专业人士,但这里就是。
我有一个时髦的脚本,其中一小部分在jenkins pipleine发生故障时发送电子邮件。这是捕获代码,如果出现问题,它会发送电子邮件。
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变量中。现在我想在我的to
属性中使用USER_ID变量(类似这样:to: USER_ID
),但似乎这不是这样做的。
我的错误是什么
编辑:我想我必须使用EnvInject插件?
答案 0 :(得分:1)
在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}"
}
我不太确定如何使用bat脚本输出你的userId(更熟悉shell脚本,抱歉)但是你明白了......
答案 1 :(得分:1)
使用jenkins插件解决了这个问题
readFile 'user_id.txt'
答案 2 :(得分:0)
在groovy中,您可以访问以下环境变量:
groovy -e "println System.env.LOGNAME"
因此可以(如果USER_ID是环境变量)可以访问变量的内容,如
to: System.env.USER_ID
但也许在你的jenkins env中,变量已经存在了?
to: env.USER_ID
另一种可能性是:
to: new File("user_id.txt").text.replace("\n", "")