bash - 在脚本化管道中使用 shell 脚本设置 env 变量的值
问题描述
我有一个脚本管道,其中一个阶段我需要根据 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
}
}
解决方案
当子进程退出时,子进程的环境就会丢失。因此,一旦您的子进程完成,您对子进程的更改就会MY_VAR
丢失sh
。
您需要将更改向上传达给您的父母,也许通过使用
echo $MY_VAR
并在父级中捕获该输出。或者,将值写入文件并在父文件中读取它们。
推荐阅读
- excel - 选择唯一的随机值并将它们加入 excel 的一个单元格中
- ios - 如何从容器视图中删除 UIViewController?
- php - 如何使用php一个接一个地插入数据库列
- javascript - 如何使用javascript提取“最近邻”文本?
- django - django:使用一对一链接扩展用户模型 - 如何使用 post_save 信号
- javascript - 大型 jsPDF 文件导致 504 网关超时
- c - 32 张卡片组的特定排列(在 C 中)
- python - python中打印功能的错误?
- matlab - How can I find the average of largest set of non-zero values in an array
- python - How to solve the error when importing matplotlib in Anaconda on macOS?