Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 将批处理变量添加到groovy电子邮件扩展管道_Batch File_Jenkins_Groovy_Jenkins Pipeline - Fatal编程技术网

Batch file 将批处理变量添加到groovy电子邮件扩展管道

Batch file 将批处理变量添加到groovy电子邮件扩展管道,batch-file,jenkins,groovy,jenkins-pipeline,Batch File,Jenkins,Groovy,Jenkins Pipeline,不是groovy或batch上的专业人士,但现在开始 我有一个groovy脚本,其中一小部分在jenkins pipleine出现故障时发送电子邮件。下面是一个catch代码,如果出现问题,它会发送电子邮件 catch (Exception e){ def buildNumber = env.BUILD_NUMBER def buildurl = env.BUILD_URL def buildjobname = env.JOB_NAME bat

不是groovy或batch上的专业人士,但现在开始

我有一个groovy脚本,其中一小部分在jenkins pipleine出现故障时发送电子邮件。下面是一个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: 
}
如您所见,我有一行代码,它执行一些batshell脚本,通过读取一个文件将user_id内容存储到user_id变量中。现在我想在我的
to
属性中使用USER\u ID变量(类似于:
to:USER\u ID
),但似乎不是这样做的

我错了什么


编辑:我想我必须使用EnvInject插件?

在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", "")

在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", "")

在Jenkins管道代码中,可以使用bat输出将用户ID作为变量。例如:

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脚本(更熟悉shell脚本,抱歉)输出您的用户ID,但您知道……

在Jenkins pipelines代码中,您可以使用bat输出将您的用户ID作为变量。例如:

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脚本(更熟悉shell脚本,抱歉)输出您的用户ID,但您知道了…

使用a jenkins插件解决了这个问题

readFile 'user_id.txt'

通过使用jenkins插件解决了这个问题

readFile 'user_id.txt'

不,没有
env.USER\u ID
这样的东西,但是有
env.USERNAME
但是没有给出启动构建的用户ID。可能不直接在“to:”之后的地图中。您可以尝试创建一个def userId=new File(“user_id.txt”).text.replace(“\n”,”)的变量,并在to:userId中使用该变量…嗯,我似乎无法使用它?我发现这个错误
脚本不允许使用新的java.io.File java.lang.String
,这很可悲。我目前对詹金斯一无所知…:-(感谢您的帮助。我正在查看inject环境变量是否有帮助,因为没有
env.USER_ID
这样的东西,但是有
env.USERNAME
,但没有提供启动构建的用户ID。可能不直接在“to:”之后的映射中。您可以尝试创建一个def userId=new File(“USER_ID.txt”)的变量.text.replace(“\n”,”)并使用to:userId中的变量…嗯,似乎我无法使用它?我得到了这个错误
脚本,不允许使用新的java.io.File java.lang.String
,这很遗憾。我目前对jenkins一无所知…:-(感谢您的帮助。我正在查看inject环境变量是否有帮助。我尝试了它,得到了以下错误:
类hudson.plugins.emailext.EmailExtStep.setTo()需要类java.lang.String,但收到类java.lang.Integer
我已经相应地编辑了我的答案,请尝试使用
“${userId}”
而不是
userId
,这将得到一个字符串0@domain.com而
'${userId}'
给我${userId}@domain.com。
“${userId}”
基本上是编写一个启用变量替换的字符串,这意味着它将用它的值替换变量userid,因此显示
0
'${userid}“
正在编写一个没有变量替换的字符串,这不是您想要的。但是如果代码是正确的,如果您对显示的
0
不满意,您应该检查为什么您的文件具有此
用户ID而不是您想要的用户ID…但这与此问题无关!我尝试了它,得到了此错误:
class hudson!”.plugins.emailext.EmailExtStep.setTo()需要类java.lang.String,但收到类java.lang.Integer
我已相应地编辑了我的答案,请尝试使用
“${userId}”
而不是
userId
,这将得到一个字符串。编写
“${userId}”将给我提供一个字符串0@domain.com
'${userId}'
给我${userId}@domain.com.
“${userId}”
基本上是用变量替换启用来编写字符串,这意味着它将用它的值替换变量userId,因此显示
0
'${userId}“
正在编写一个没有变量替换的字符串,这不是您想要的。但是,如果提供的代码是正确的,如果您对显示的
0
不满意,您应该检查为什么您的文件有此
用户ID而不是您想要的…但这与此问题无关!