我需要为maven构建提供服务器名称。在maven构建期间,此服务器名称将用于调用服务器在该服务器上执行某些测试。
我们的服务器上有jenkins奴隶,并使用标签分组
实施例
Slaves/Node | Label
Server1 | BackEndServers
Server2 | BackEndServers
Server3 | FrontEndServers
Server4 | FrontEndServers
使用Elastic Axis插件,我可以说在此节点标签上运行我的Jenkins作业(例如在BackEndServers上),同一个项目将在两个服务器(Server1和Server2)上执行。
在我的情况下,我不能这样做,因为我的代码运行的BackEndServers上没有安装maven。但是maven构建需要知道服务器名称。
那么有一种方法可以从标签中获取服务器名称,然后多次运行相同的作业,将每个服务器名称传递给maven构建吗?
实施例
给我标签'BackEndServers'
获取节点名称'Server1,Server2'
答案 0 :(得分:1)
在构建作业的Maven命令中使用 NODE_NAME 等Jenkins environment variables作为系统属性的值。例如:
mvn clean install -Djenkins.node.name=${NODE_NAME}
在您的Maven项目(pom.xml)中,在以下属性的帮助下配置需要节点名称的插件: $ {jenkins.node.name}
以下是一些链接 - 如何远程触发Jenkins构建:
如果可能的话,我不会这样做。但提供的信息可以帮助您找到解决方案。
答案 1 :(得分:1)
尝试Jenkins.getInstance().getComputer(env.NODE_NAME).getNode()
进一步了解official Doc
答案 2 :(得分:0)
最后我创造了2个工作岗位。
在Job 1中 - 我使用了EnjEnv插件,它有一个'Evaludated Groovy Script'部分,基本上你可以做任何事情......但它应该返回一个属性映射。我不知道如何从Groovy脚本返回一个值,所以这对我来说很有用,因为我可以从几乎任何软件中引用属性(或环境变量)
import hudson.model.*
String labelIWantServersOf = TheLabelUsedOnTheElasticAxisPlugin; // This is the label assosiated with nodes for which i want the server names of
String serverList = '';
for (aSlave in hudson.model.Hudson.instance.slaves) {
out.println('Evaluating Server(' + aSlave.name + ') with label = ' + aSlave.getLabelString());
if (aSlave.getLabelString().indexOf(labelIWantServersOf ) > -1) {
serverList += aSlave.name + ' ';
out.println('Valid server found: ' + aSlave.name);
}
}
out.println('Final server list where SOAP projects will run on = ' + serverList + ' which will be used in the environment envInject map');
Map<String, String> myMap = new HashMap<>(2);
myMap.put("serverNamesToExecuteSoapProjectOn", serverList );
return myMap;
然后我有一些问题将Environment var传递给我的下一份工作。所以我只是在构建过程
中使用windows batc脚本将我想要的值写入属性文件echo serverNamesToExecuteSoapProjectOn=%serverNamesToExecuteSoapProjectOn%> baseEnvMap.properties
然后作为一个后期构建操作,我有一个“其他项目的触发器参数化构建”调用我的第二个工作,我将baseEnvMap.properties传递给它。
然后在作为Multiconfig作业的Job 2上,我使用通过属性文件传递给作业2的环境var添加了动态轴。
这将复制Job 2,并且每次都使用groovy脚本构建的值执行它,我可以在我的mvn参数中引用它。
答案 3 :(得分:0)
列出标签名称LABELNAME的所有节点: