代码之家  ›  专栏  ›  技术社区  ›  machnic

在脚本化管道中使用shell脚本设置env变量的值

  •  0
  • machnic  · 技术社区  · 6 年前

    已编写脚本 管道中有一个阶段,我需要根据shell脚本的输出设置当前构建的结果。不幸的是,用shell脚本设置值并没有改变使用 withEnv .

    有人能指出下面的简化片段中的错误(如果有)或提出其他解决方案吗?

    stage('MyStage') {
        withEnv(["MY_VAR=null"]) {
            if (env.someCondition1 || env.someCondition2) {
                sh '''#!/bin/bash
                echo $MY_VAR              # null
                export MY_VAR="UNSTABLE"
                printenv | grep MY_VAR    # MY_VAR="UNSTABLE"
                '''
            }
            echo env.MY_VAR                   // null
            currentBuild.result = env.MY_VAR
            echo currentBuild.result          // FAILURE
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Corion    6 年前

    MY_VAR 一旦你的孩子 sh 过程完成。

    你需要向上传达改变给你的父母,也许可以使用

    echo $MY_VAR
    

    并在父级中捕获输出。或者,将值写入文件并在父级中读取它们。