我的工作需要知道上次作业计算的值。
有没有办法将它存储在Hudson / Jenkins环境中?
例如,我可以在shell脚本操作中写下类似的内容:
XXX=`cat /hardcoded/path/xxx`
#job itself
echo NEW_XXX > /hardcoded/path/xxx
但是有更可靠的方法吗?
答案 0 :(得分:9)
一些选择:
userContent
子目录,你可以使用它 - 这样文件至少是jenkins安装的一部分,因此更容易迁移或备份。我为我的构建的(相当大的)代码覆盖率趋势文件执行此操作。适当的解决方案取决于您的情况。
答案 1 :(得分:2)
如果您使用 Pipelines 并且您的变量是简单类型,您可以使用参数在同一作业的运行之间存储它。
使用 properties
步骤,您可以从管道内配置参数及其默认值。配置完成后,您可以在每次运行开始时读取它们并在最后保存它们(作为默认值)。在声明式管道中,它可能看起来像这样:
pipeline {
agent none
options {
skipDefaultCheckout true
}
stages {
stage('Read Variable'){
steps {
script {
try {
variable = params.YOUR_VARIABLE
}
catch (Exception e) {
echo("Could not read variable from parameters, assuming this is the first run of the pipeline. Exception: ${e}")
variable = ""
}
}
}
}
stage('Save Variable for next run'){
steps {
script {
properties([
parameters([
string(defaultValue: "${variable}", description: 'Variable description', name: 'YOUR_VARIABLE', trim: true)
])
])
}
}
}
}
答案 2 :(得分:1)
我会将变量从第一个作业传递到第二个作为parameterized build中的参数。有关如何从另一个构建触发参数化构建的更多信息,请参阅this question。