如何在构建后操作中访问jenkins中的java代码级变量- slack notifications

oymdgrw7  于 11个月前  发布在  Jenkins
关注(0)|答案(1)|浏览(142)

在我的代码中有一个java String变量,比如说
第一个月
在jenkins中运行此代码后,我在post build actions -> Slack Notification(外部插件)下的自定义消息中发送了一些数据。
像明智的,我需要得到上述变量值也自定义消息
尝试的方法:
我把上面提到的变量作为系统变量,
System.setProperty("jenkinsVariableToAccessInPostAction", jenkinsVariable)
在构建后操作-> Slack通知(外部插件)->自定义消息中,尝试使用
${ENV,jenkinsVariableToAccessInPostAction}
${ENV.jenkinsVariableToAccessInPostAction}
但是上面提到的两种方法都不起作用。我在slack消息中打印了${ENV,jenkinsVariableToString InPostAction}和${ENV. jenkinsVariableToString InPostAction}本身

b91juud3

b91juud31#

基本上,你试图在Java应用程序和正在执行的Jenkins管道之间共享数据,这是不可能的,直接通过设置环境变量,因为它只影响当前运行的会话,而不是Jenkins文件存储的环境对象-你试图访问。
克服这个问题的最简单方法是将所需的相关数据(在本例中为参数及其值)写入文件,然后通过管道读取文件并提取相关数据。
例如,在java应用程序中创建一个名为params.properties的文件,并以properties文件格式向其中写入所需的参数:

var1=value1
var2=value2
var3=value3

字符串
然后在你的post build中,使用readProperties步骤读取这个文件,你将在返回的字典中获得所需的值。

post {
   always {
       def loadedParams = readProperties file: 'params.properties' // load the parameters from your parameters file
       println("Value for loaded var1 is ${loadedParams['var1']}") // use the values loaded from the file
   }
}


当然,您可以为参数文件使用不同的格式,如Yaml或Json,然后使用相关的管道步骤来读取它们。

相关问题