【问题标题】:How to pass environment variable of hudson as a parameter for svn build如何将hudson的环境变量作为svn build的参数传递
【发布时间】:2011-04-28 05:22:56
【问题描述】:

我的要求是svn url的子项目的build参数中需要Hudson的环境变量的范围。

我想将 SVN 分支名称设置为 Hudson 的环境变量,因为我希望它被在那里配置的所有项目使用。

如果我以 [BUILD_BRANCH] 身份访问我的环境变量

http://svn/repos/project/subproj/branches/${BUILD_BRANCH}

url 没有被值替换。

但在同样的情况下,如果我在每个子项目中将 BUILD_BRANCH 作为参数化构建的字符串参数,则 url 将替换为值。但是我不能在所有项目中每次都更改分支值[构建参数值]。下游项目也无法访问调用项目的构建参数[String]。

【问题讨论】:

  • 出于礼貌,如果答案解决了您的问题,我们通常会提供反馈并标记最佳答案(最能描述所需解决方案或引导您找到解决问题的正确路径的答案) .如果你这样做了,人们将来会更愿意帮助你。
  • 是的,我已经尝试过了,它的工作原理如下:单击“此构建已参数化”并设置变量 BUID_BRANCH=Branch1,2 和 svn url = svn/repos/project/subproj/branches/$BUID_BRANCH 后定义参数。虽然 SVN URL 在设置时会显示为失败,但变量值 BUID_BRANCH 将在运行时获取。

标签: svn build branch hudson


【解决方案1】:

在ManageHudson->配置系统->全局属性->环境变量中设置BUILD_BRANCH

【讨论】:

  • My Hudson 可以访问环境变量,但只能访问全局定义的变量。由于我的 Hudson 作为服务运行,因此对环境变量的任何更改通常都需要重新启动整个系统(os reboot)。
  • 我已经在全局属性下的环境变量中提供了BUILD_BRANCH,但它不起作用。那就是我提出了这个问题。
【解决方案2】:

让我澄清你的问题。您已经定义了一个环境变量 BUILD_BRANCH 并希望能够从构建的参数中引用它。对吗?

如果是这样,那我已经解决了你的问题!

当参数被评估(并且其中引用的任何变量都被扩展)时,您无法访问环境变量,因此参数的值最终是文字字符串'${BUILD_BRANCH}',而不是扩展为 $BUILD_BRANCH 的环境定义。

然后当你从 shell 脚本中引用参数时,参数的值用单引号括起来,防止额外的间接层被解析,所以你得到的是你的环境变量的名称,而不是它的值。

解决方案是在每行引用参数的shell脚本的开头添加eval,这解析额外的层,并且变量将起作用。

最后一件事——如果你引用了前一个参数,你不必这样做。因此,如果 Param1 是 foo,而 Param2 是 ${foo} bar,这将起作用,因为参数是按顺序计算的。但是,如果切换了参数值,则需要使用 eval。

【讨论】:

  • 这不起作用,因为它需要在不是脚本的存储库 URL 字段中。
【解决方案3】:

在构建的配置中有一个名为:“此构建已参数化”的复选框。

如果您启用它,您将能够为此特定构建创建参数。

我希望这会有所帮助。

【讨论】:

    【解决方案4】:

    目前似乎没有使用环境变量来调整 subversion 存储库位置的方法。我决定做的是用脚本在外面编辑config.xml 文件。

    如果该变量的值以编程方式更改,这可能对您不起作用,但对我们而言,我希望能够在分支和主干之间迁移我们的工作,这在每个 sprint 中都会完成并且是一个手动过程。

    类似以下的某种脚本对我们有用:

    FROM_SVN_PATH="svnserver.com/trunk"
    TO_SVN_PATH="svnserver.com/branches/1.1"
    cd jobs
    for f in */config.xml
    do
        sed -e "s,$FROM_SVN_PATH,$TO_SVN_PATH," < "$f" > "$f.t"
        mv "$f" "$f.ORG"
        mv "$f.t" "$f"
    done
    

    如果您使用的是 Jenkins,则可以转到“管理 Jenkins”并选择“从磁盘重新加载配置”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-27
      • 2018-12-02
      • 2021-05-19
      • 2021-01-21
      • 2021-01-03
      • 2021-09-15
      • 2015-03-25
      相关资源
      最近更新 更多