我有一个master(linux)和一个windows slave设置,并希望在主服务器和从服务器上构建一个单独的工作。 “限制此项目可以运行的位置”选项允许我们将作业绑定到特定的从属服务器,但是是否可以将一个作业绑定到主服务器以及从服务器?如何配置“构建步骤”,因为在Windows上运行它需要使用Windows批处理命令构建,Linux需要shell命令。例如,即使作业尝试在主服务器和从服务器上运行,也不会在某一时刻失败,因为两个构建选项(使用batch和shell命令)都将被执行?
答案 0 :(得分:16)
好吧,在Jenkins你可以创建一组机器(主机或从机)来做到这一点:
mutli_platform
标签,例如Restrict where this project can be run
并将mutli_platform
放入其中。然后,您的版本将能够在mutli_platform
标签上运行。
对于第二部分,多平台脚本,您可以使用ant构建或python构建(使用python plugin)。
编辑:如果您需要在2个(或更多)平台上构建,则应使用Matrix Job。您将能够创建一个作业并强制它在您需要的每个奴隶上运行。
答案 1 :(得分:0)
你应该这样做:
import groovy.json.JsonSlurperClassic
def requestNodes() {
def response = httpRequest url: '<your-master-url>/computer/api/json', authentication: '<configured-authentication>'
println("Status: "+response.status)
return new JsonSlurperClassic().parseText(response.content)
}
def Executor(node_name) {
return {
stage("Clean ${node_name}") {
node(node_name) {
//agent {node node_name}
echo "ON NODE: ${node_name}."
}
}
}
}
def makeAgentMaintainer() {
def nodes = requestNodes()
def agent_list = []
for (e in nodes['computer']) {
echo e.displayName
if (!e.offline) {
if (e.displayName != "master") {
agent_list.add(e.displayName)
}
}
}
def CleanAgentsMap = agent_list.collectEntries {
["${it}" : Executor(it)]
}
return CleanAgentsMap
}
node {
parallel makeAgentMaintainer()
}
您将需要 http_request 插件并进行一些审批。 在 Executor 函数中,您可以定义要在每个 Agent 上执行的命令。