[英]When I use a Jenkinsbuild file in Jenkins to run a shell script, does it execute on master or slave?
我很困惑。 我已經設置了詹金斯。 我已經設置了一個主節點和一個從節點。 我的git倉庫中有一個Jenkinsbuild文件,該文件由管道作業執行。 在Jenkinsbuild文件中,我有如下幾行:
sh "docker build -t cd-demo ."
這在哪里執行? 這是發生在主機還是從機上?
如果我編寫了Python腳本,並且想將其稱為shell腳本,是否需要將Python腳本放在主服務器還是從服務器上?
更為重要的是:如果我要將構建的Docker映像推送到ECS,則哪台機器需要具有AWS憑證,主機或從機?
如果您的主人有執行者,那將是為它服務的人。 如果您碰巧定義了Elias22回答的標簽,它將在包含該標簽的使用最少的節點上運行(您必須在從屬服務器上設置標簽才能正常工作)。
關於憑據,這些應保留在主控中。 有一個用於AWS憑證的插件。 主人總是負責保守秘密
如果您正在使用Cloudbees的aws憑證插件,並且將Jenkinsfile與管道一起使用,則可以在管道中使用以下內容。 考慮到您必須首先在詹金斯/憑證上設置憑證。
node{
label 'buildSlaveLabel'
}
stage("Im pushing docker image at this stage")
{
withAWS(credentials:'TheNameYouSetUnderCredentialsInJenkins') {
sh "docker-push.sh"
}
}
這類似於節點對憑據的任何其他使用,例如SCM(git,svn)或其他憑據使用。
將其提供給節點是主要的責任。
但是,您始終可以允許該節點將其aws憑證放置在任何使用從屬服務器的人都可以訪問的地方。 (我強烈建議您這樣做,因為沒有理由這樣做)
它將在該節點上運行,詹金斯認為,這是目前最好的。
但是您可以通過以下代碼在常規代碼中定義應該在哪個節點上運行單個步驟或整個管道:
node{
label '<node-name>'
}
如果要運行python代碼,則必須將其放在要運行該代碼的每個節點上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.