Jenkins 持久化可编辑全局变量

Jenkins Persistent Editable Global Variable

我正在寻找一个 plugin/approach 让我设置和读取持久全局变量以在作业之间使用的工具。

场景是我有 CI 作业在代码库的各个分支上运行测试,我想关联一个与发布分支的最后一个稳定版本相对应的内部版本号。即

Build No    Branch    Result    GolbalSharedThingVal    
5           release   Success   1.5
6           dev       Fail      1.5
7           dev       Success   1.7
8           release   Unstable  1.7
9           release   Success   1.9
10          release   Fail      1.9

然后在我的部署工作中,我想使用 groovy post 构建操作使用版本注释构建:

manager.addShortText(" ${manager.build.env.get('GolbalSharedThingVal')}")

有人对 GolbalSharedThingVal 有什么建议吗?

非常感谢, 瓦卡

EnvInject 插件是 任何与环境变量相关的插件。

不知道如何设置持久性全局变量(这违反了 Jenkins 的设计原则),但您可以让作业将值导出到属性文件,其他作业从属性文件中读取值在初始化时将其作为环境变量公开给其他构建步骤。

当然 属性 文件必须位于 Jenkins master 的中央某处

如果你确定不同的jobs/stages 运行在同一个代理上,你可以使用一个文件作为持久存储。在声明式管道中,这看起来像

stage('myStage') {                                             
  steps {                                                         
    echo 'in myStage'                                          
    sh '''                                                        
      # get value from file into environment variable
      export PERSISTENTVAR=`cat $HOME/persistent_var_file`                        
      
      # do some stuff here to e.g. change $PERSISTENTVAR

      # save env variable into file for later use
      echo $PERSISTENTVAR > $HOME/persistent_var_file                             
    '''                                                           
  }
}