gpt4 book ai didi

amazon-ec2 - 在EC2-Fleet上设置Jenkins环境变量的问题

转载 作者:行者123 更新时间:2023-12-04 04:39:43 65 4
gpt4 key购买 nike

在动态EC2-Fleet上设置Jenkins环境变量时遇到问题。

我们已经有一个固定的主服务器(linux)和一个固定的Windows从服务器,但希望在系统负载沉重时动态添加从服务器。
为此,我们在AWS中创建了一个竞价请求实例,从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。由于存在此错误,因此“系统配置”将覆盖“节点配置”,而不是相反。所以我们不能使用它,因为现有节点将不再具有正确的环境变量。

作为最后的选择,我们尝试通过在竞价请求实例使用的AMI上创建/etc/profile.d/jenkinsvars.sh来设置动态ec2从站上的环境变量。
该脚本将在整个登录系统(https://help.ubuntu.com/community/EnvironmentVariables#A.2Fetc.2Fprofile.d.2F.2A.sh)上自动运行。
接下来,我们还尝试在AMI上的/home/ubuntu/.profile中设置它们,以选择ubuntu用户,该用户是运行Jenkins代理的用户(https://help.ubuntu.com/community/EnvironmentVariables#A.2BAH4-.2F.profile)。
但是看来Jenkins并没有使用这些环境变量,而是使用了自己的环境变量。

一种有效的方法是调整作业以加载groovy文件,该文件是AMI的一部分,用于设置我们需要的环境变量,但这意味着更改我们拥有的几乎所有作业,除了存储库中包含的所有Jenkins文件(Bitbucket)项目)。
我们希望避免这种情况。

最佳答案

尝试以下策略:

  • 在竞价型实例启动时利用用户数据来运行Shell脚本。它是主要的recommended way by Amazonplugin authors
  • 不是将变量保存到环境中,而是让用户数据脚本将它们保存到/var/tmp或/etc/profile或参数存储中。请参阅此SO question中的答案。如果要加密信息,请使用KMS参数存储,如果您不在乎,请使用其他参数之一。选择最适合您需求的答案之一。
  • 更改您的Jenkins作业以暂停,直到您的用户数据脚本完成运行为止(请参阅documentation from the plugin)
  • 更改您的Jenkins作业,以从您在步骤2中选择的位置获取变量。
  • 关于amazon-ec2 - 在EC2-Fleet上设置Jenkins环境变量的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58006452/

    65 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com