从jenkins中的sh文件设置环境,并在构建的其余部分保留它
在我的管道中,我想要源文件,设置环境变量,如从jenkins中的sh文件设置环境,并在构建的其余部分保留它,jenkins,Jenkins,在我的管道中,我想要源文件,设置环境变量,如/file.sh并为管道的其余部分设置它们。 我认为这并没有得到实施,因为这是一个已经存在多年的问题 目前,我在做以下测试: stage("Stage") { steps { sh ". ./file.sh && env" sh "env" } } 2个环境输出不同的值。我希望詹金斯每次都能创建一个新的shell。是否有不调用新shell的选项 据我所知,我看到了3种可能性: 在一个sh
/file.sh
并为管道的其余部分设置它们。
我认为这并没有得到实施,因为这是一个已经存在多年的问题
目前,我在做以下测试:
stage("Stage") {
steps {
sh ". ./file.sh && env"
sh "env"
}
}
2个环境输出不同的值。我希望詹金斯每次都能创建一个新的shell。是否有不调用新shell的选项
据我所知,我看到了3种可能性:
sh
语句中执行所有我的命令,或将执行过程包装在脚本中。问题是这使得调试相当困难最后两个解决方案听起来很糟糕,欢迎提出任何建议。看起来我们可以按照
环境
指令功能处理全局变量和阶段特定变量
因此,在您的实例中,如果您在全局范围内定义file.sh
中的所有变量,那么打印将给出所需的结果
管道{
任何代理人
环境{
myGlobVar='2020'
}
舞台{
阶段('示例'){
环境{
mystspecificvar=2020.2
}
台阶{
sh‘printenv’
}
}
}
}
这不是我想做的。我使用的脚本来自一个库,它做了很多事情并设置了变量。您的建议只涉及环境指令设置一个变量,因为没有像“预构建”阶段选项那样构建的功能,我认为它是通过职责分离实现的——在shell脚本中,您可以使用脚本管道语法或sh
执行一些特定于脚本的逻辑。并在全局部分定义所有变量(Jenkins作业所需的变量)(多个变量在单独的行中)。或者在您的脚本业务逻辑中,您需要源文件
该概要文件-通过将名称=值
对分离到一个新文件