[英]Jenkins - Running a single job in master as well as slave
我有一個主 (linux) 和一個 Windows 從屬設置,並希望在主服務器和從屬服務器上構建一個作業。 “限制此項目可以運行的位置”選項允許我們將作業綁定到特定的從站,但是否可以將一個作業綁定到主站和從站? 如何配置“構建步驟”,因為在 Windows 上運行它需要使用 Windows 批處理命令進行構建,而 Linux 需要 shell 命令。 例如,即使作業嘗試在 master 和 slave 上運行,它是否會在某一時刻失敗,因為這兩個構建選項(使用批處理和 shell 命令)都將被執行?
好吧,在 Jenkins 中,您可以創建機器組(主機或從機),以執行此操作:
mutli_platform
標簽Restrict where this project can be run
並將mutli_platform
放入其中。 然后,您的構建將能夠在mutli_platform
標簽上運行。
對於第二部分,多平台腳本,您可以使用 ant 構建或 python 構建(使用python 插件)。
編輯:如果您需要在 2 個(或更多)平台上構建,您應該使用Matrix Job 。 您將能夠創建一個作業並強制它在您需要的每個奴隸上運行。
你應該這樣做:
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 上執行的命令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.