【问题标题】:Jenkins Persistent Editable Global VariableJenkins 持久可编辑全局变量
【发布时间】:2015-06-22 19:59:30
【问题描述】:

我正在寻找一种插件/方法,它可以让我设置和读取一个持久的全局变量,以便在作业之间使用。

场景是我有一个在代码库的各个分支上运行测试的 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 构建后操作使用版本注释构建:

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

有人对 GobalSharedThingVal 可能是什么有任何建议吗?

非常感谢, 瓦卡

【问题讨论】:

    标签: jenkins continuous-integration jenkins-plugins tagging continuous-deployment


    【解决方案1】:

    如果您确保不同的作业/阶段在同一个代理上运行,您可以将文件用作持久存储。在声明性管道中,这可能看起来像

    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                             
        '''                                                           
      }
    }
    

    【讨论】:

      【解决方案2】:

      EnvInject 插件是插件,适用于与环境变量相关的任何内容。

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

      当然,属性文件必须集中在 Jenkins master 的某个地方

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-27
        • 2015-04-15
        • 1970-01-01
        • 2018-02-04
        • 2016-09-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多