【问题标题】:Setting Jenkins Environment Variable value via evaluation of command通过评估命令设置 Jenkins 环境变量值
【发布时间】:2015-10-01 02:30:42
【问题描述】:

任何人都知道如何使用注入变量或其他方式在 jenkins 中基于 unix 终端命令设置环境变量值。例如 CurrentBranch=ls /project/folder | grep my_name。这似乎不起作用。我想要这个命令,ls /project/folder | grep my_name,进行评估,结果应设置为 CurrentBranch。

某些原因 CurrentBranch 变量值永远不会被评估,而是它始终具有这样的值:ls /project/folder | grep my_name

任何人都知道我做错了什么。

谢谢。

【问题讨论】:

    标签: shell jenkins command environment-variables evaluate


    【解决方案1】:

    我认为您无法以某种方式做到这一点,以便 任何 Jenkins 任务都可以使用它。

    但是,您可以编写您的 Jenkins 任务,以便它们都执行 shell 脚本,然后您的问题归结为寻找合适的 rc 文件(例如,我们使用 zsh 作为 shell 并有一个特殊的 rc 文件仅用于Jenkins),在这个文件中,你可以按照通常的方式设置你的环境,即

    export $(ls /project/folder | grep my_name)
    

    (当然,以这种方式对 ls 的输出进行 grep 并不是最好的主意,但这是一个不同的话题)

    【讨论】:

      【解决方案2】:

      您可以将 CurrentBranch 保存在一个名为 env 的文件中,然后使用 EnvFile Plugin将该文件注入您的作业中

      echo "CurrentBranch=`ls /project/folder | grep my_name`" > /tmp/env
      

      【讨论】:

        【解决方案3】:

        在jenkins作业配置中,勾选“Prepare an environment for the run”复选框。

        选择下面的复选框 保留 Jenkins 环境变量
        保留 Jenkins 构建变量

        在“脚本内容”部分,运行以下命令以创建属性文件

        echo "CurrentBranch=`ls /project/folder | grep my_name`" > /tmp/jenkins_job.prop
        

        然后在“属性文件路径”部分中,给这个属性文件提供完整的路径名。

        现在 CurrentBranch 变量将在整个构建过程中可用,并且可以使用 ${CurrentBranch} 访问。

        【讨论】:

        • helloworld,如果答案对您有帮助的话。请您标记为正确答案好吗?
        猜你喜欢
        • 1970-01-01
        • 2010-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-17
        • 1970-01-01
        相关资源
        最近更新 更多