【问题标题】:Jenkins Environment Variable String Interpolation for Setting Custom Workspace用于设置自定义工作区的 Jenkins 环境变量字符串插值
【发布时间】:2020-10-21 06:24:46
【问题描述】:

我在 Jenkins 中使用多分支管道,我需要根据正在构建的分支名称动态设置自定义工作区目录的名称。当我为管道定义自定义工作区时,我尝试访问包含分支名称的环境变量,如下所示:

pipeline {

  agent {

    node {

      label 'master'

      customWorkspace 'some/path/${BRANCH_NAME}'

但是,在工作区的git init 期间,不会发生字符串插值。它不会在字符串中插入任何分支名称,而是尝试将工作空间名称设置为'${BRANCH_NAME}',而不插入分支名称变量。如果我在 agent 块之外插入变量(例如,如果我在 stage 块中插入变量),字符串插值会非常好,我可以从 Jenkins 收到分支的名称。

这个问题的原因可能是什么?还有其他方法可以根据多分支管道中的分支名称设置自定义工作区吗?

谢谢!

【问题讨论】:

    标签: jenkins continuous-integration jenkins-pipeline multibranch-pipeline


    【解决方案1】:

    字符串插值适用于双引号,但不适用于单引号。当我将语法更改为以下内容时,它可以工作:

    pipeline {
    
      agent {
    
        node {
    
          label 'master'
    
          customWorkspace "some/path/${BRANCH_NAME}"
    

    注意customWorkspace 定义周围使用的双引号。

    显然,Groovy 无法对单引号字符串执行字符串插值。然而,由于某种原因,单引号字符串中的字符串插值在 agent 块之外(例如在 stage 块中)工作,但在上面的示例中拒绝工作。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-20
    • 2014-08-16
    • 2016-12-22
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 2013-06-11
    • 2011-06-15
    相关资源
    最近更新 更多