我们在动态EC2-Fleet上设置Jenkins环境变量时遇到问题。
我们已经有了一个固定的主服务器(linux)和一个固定的Windows从服务器,但希望在系统负载变得沉重时动态地添加从服务器。为此,我们在AWS中创建了一个从AMI启动linux机器的Spot Request实例,并通过Jenkins中的EC2-fleet-plugin进行控制。
在这个EC2舰队能够提供任何帮助之前,我们的作业必须能够在它的节点上运行。我们的大多数作业都使用Jenkinsfile,并且需要设置某些环境变量,但是EC2-fleet-plugin不提供设置环境变量(https://issues.jenkins-ci.org/browse/JENKINS-36544)的可能性。
正如本文(JENKINS-36544)所建议的,我们尝试在“系统配置”中为动态ec2从站设置环境变量,并为“节点配置”上的其他节点设置环境变量以覆盖“系统配置”,至少我们是这么认为的。如果这个bug不存在,这应该是可行的:https://issues.jenkins-ci.org/browse/JENKINS-44425。由于这个bug,“系统配置”会覆盖“节点配置”,而不是相反。因此,我们不能使用它,因为现有节点将不再具有正确的环境变量。
作为最后的手段,我们尝试通过在Spot请求实例使用的ec2上创建/etc/profile.d/jenkinsvars.sh来设置动态AMI上的环境变量。此脚本将在登录系统范围(https://help.ubuntu.com/community/EnvironmentVariables#A.2Fetc.2Fprofile.d.2F.2A.sh)上自动运行。接下来,我们还尝试在AMI上的/home/ubuntu/.profile中设置它们,特别是ubuntu用户,也就是运行Jenkins agent (https://help.ubuntu.com/community/EnvironmentVariables#A.2BAH4-.2F.profile)的用户。但是Jenkins似乎没有使用这些环境变量,而是它自己的.
一种有效的方法是调整作业来加载一个groovy文件,该文件是AMI的一部分,以设置我们需要的环境变量,但这意味着要更改我们拥有的几乎所有作业,在我们的存储库(Bitbucket项目)中包含的所有Jenkinsfiles文件旁边。我们希望避免这种情况……
发布于 2019-10-03 14:45:32
尝试以下策略:
发布于 2019-10-15 19:10:46
尝试重新启动服务器环境。只是说说而已。
发布于 2021-01-13 17:14:10
问题中缺少Jenkins版本或EC2插件版本,但根据合并的拉取请求中的描述,这个错误现在应该已经修复:https://github.com/jenkinsci/ec2-plugin/pull/440#issuecomment-597160730
Jenkins版本:
,因此此更改在<=2.204和>=2.205中都有效
EC2插件版本:>=ec2-1.50
JENKINS-36544 -修复Jenkins 2.205+ (#440) 上的节点属性
在拉取请求描述中:
<代码>F224
节点属性具有环境变量。
https://stackoverflow.com/questions/58006452
复制相似问题