Jenkins Swarm插件-环境变量

Jenkins Swarm插件-环境变量,jenkins,environment-variables,jenkins-plugins,master-slave,Jenkins,Environment Variables,Jenkins Plugins,Master Slave,我有最新的Jenkins和最新的Swarm插件 我已经编写了Ansible模块/角色/剧本,用于在给定的目标节点(我想用作Swarm从属节点)上安装各种工具/配置 Ansible playbook运行完成后,我现在看到一个新的从机被创建并连接到我的Jenkins master,但Swarm插件的文档(可用选项)没有提到如何在从机中创建环境变量 我的问题是: 如何在同一台目标机器上创建多个从机,并且它们都有各自的设置,用于设置各种工具,如JAVA_HOME、M2_HOME、GRADLE_HOME、

我有最新的Jenkins和最新的Swarm插件

我已经编写了Ansible模块/角色/剧本,用于在给定的目标节点(我想用作Swarm从属节点)上安装各种工具/配置

Ansible playbook运行完成后,我现在看到一个新的从机被创建并连接到我的Jenkins master,但Swarm插件的文档(可用选项)没有提到如何在从机中创建环境变量

我的问题是:

  • 如何在同一台目标机器上创建多个从机,并且它们都有各自的设置,用于设置各种工具,如JAVA_HOME、M2_HOME、GRADLE_HOME、PATH等

  • 如何使用Swarm插件为从机设置环境变量? 这是必需的,就像我创建了一个默认JAVA为jdk1.7.0_67的从机一样,然后我想创建另一个默认JAVA_HOME为jdk1.8.0_45的从机一样。类似地,最终目标是在可能的情况下使用不同的工具提供不同风格的此类从机,其中每个从机的工具略有不同。我将相应地分配标签,并在Jenkins作业的配置中使用它,以便在相关标签分配/绑定到作业时,作业仅使用/在这些从属设备上运行


  • 我尝试使用,但不确定如何在从机的配置中自动定义/设置环境变量。

    我假设您在Linux上运行

    在调用swarm客户端之前,可以使用shell脚本导出新环境。这些变量将由新的swarm slave继承

    或者,您可以运行docker并拥有一个单独的swarm从属容器,将特定安装放入Dockerfile,并在Dockerfile底部添加一个新入口点

    ENTRYPOINT ["/usr/local/bin/jenkins-slave.sh" \
        "-labels", "label1", "-labels", "label2"]
    

    我假设你在Linux上运行

    在调用swarm客户端之前,可以使用shell脚本导出新环境。这些变量将由新的swarm slave继承

    或者,您可以运行docker并拥有一个单独的swarm从属容器,将特定安装放入Dockerfile,并在Dockerfile底部添加一个新入口点

    ENTRYPOINT ["/usr/local/bin/jenkins-slave.sh" \
        "-labels", "label1", "-labels", "label2"]
    

    嗨,谢谢。实际上我确实尝试过设置~/.bash_profile,路径为~/tools/bin,在~/tools/bin中,我创建了指向默认工具位置的符号链接,在~/.bash_profile中,我导出了所有工具变量,即导出JAVA_HOME=~/tools/bin/jdk1.8.0_45;出口GRADLE_HOME=;导出GRADLE\u USER\u HOME=...GRADLE等,一切正常,但。。。使用~/.bash_profile export=,仅针对一个从机(即,我克服了swarm插件默认不创建任何环境变量的情况)。但是,如果我有两个或更多的从机,我不知道这种方法的效果如何。按照现有的方法,如果我有多个从机,并且没有在从机的配置中手动设置环境工具的位置/值,那么我将面临这样的问题:当作业在该从机上运行时,从机将选择哪个JAVA/GRADLE/等(必须做一些变通办法,但这不适合维护)。我将尝试Docker方法(因为这似乎很有希望,可能会花费更少的时间).Hi,谢谢。事实上,我确实尝试过使用PATH=~/tools/bin和~/tools/bin设置~/.bash_配置文件,我创建了指向默认工具位置的符号链接,在~/.bash_配置文件中,我导出了所有工具变量,即导出JAVA_HOME=~/tools/bin/jdk1.8.0_45;导出GRADLE_HOME=.;导出GRADLE_用户_HOME=...GRADLE等等,但一切都正常。。.仅针对一个从机(即,我克服了swarm插件默认不创建任何环境变量的情况)使用~/.bash_profile export=。但是,如果我有两个或更多的从机,我不知道这种方法的效果如何。在现有的方法中,如果我有多个从机,并且没有在从机的配置中手动设置环境工具的位置/值,那么我将面临一些问题,例如当作业运行时,从机将选择哪个JAVA/GRADLE/etc那个奴隶(必须做一些变通办法,但这不适合维护)。我将尝试Docker的方式(因为这似乎很有希望,可能会花费更少的时间)。