在动态EC2-Fleet上设置Jenkins环境变量时遇到问题。
我们已经有一个固定的主服务器(linux)和一个固定的Windows从服务器,但是希望在系统负载沉重时动态添加从服务器。为此,我们在AWS中创建了一个Spot请求实例,通过AMI从AMI分解Linux机器,并通过Jenkins中的EC2-fleet-plugin对其进行控制。
在此EC2-fleet不能提供任何帮助之前,我们的工作必须能够在其节点上运行。我们的大多数工作都使用Jenkinsfiles,并且需要设置某些环境变量,但是EC2-fleet-plugin无法提供设置环境变量的可能性(https://issues.jenkins-ci.org/browse/JENKINS-36544)。
如该故障单(JENKINS-36544)所建议,我们尝试在动态ec2从站的“系统配置”中设置环境变量,并在“节点配置”中覆盖“系统配置”的其他节点上设置环境变量,还是我们认为。如果该错误不存在,则应该可以使用:https : //issues.jenkins-ci.org/browse/JENKINS-44425。由于存在此错误,因此“系统配置”将覆盖“节点配置”,而不是相反。因此我们不能使用它,因为现有节点将不再具有正确的环境变量。
作为最后的选择,我们尝试/etc/profile.d/jenkinsvars.sh
通过在竞价请求实例使用的AMI上创建一个在动态ec2从站上设置环境变量。该脚本将在整个登录系统范围内自动运行(https://help.ubuntu.com/community/EnvironmentVariables#A.2Fetc.2Fprofile.d.2F.2A.sh)。接下来,我们还尝试将它们设置在/home/ubuntu/.profile
AMI上,以选择ubuntu用户,该用户是运行Jenkins代理的用户(https://help.ubuntu.com/community/EnvironmentVariables#A.2BAH4-.2F.profile) 。但是似乎詹金斯并不使用这些环境变量,而是使用自己的...
一种有效的方法是调整作业以加载groovy文件,该文件是AMI的一部分,用于设置所需的环境变量,但这意味着更改存储库中包含的所有Jenkins文件旁边的几乎所有作业(Bitbucket项目)。我们希望避免这种情况。