[英]Jenkins always pull docker image from a declarative pipeline agent definition
[英]How to copy an artefact from one agent to another in a Jenkins declarative pipeline?
我想使用 Jenkins 聲明式管道和代理語法來構建我想要部署到側車容器的人工制品,如以下偽代碼所示:
pipeline {
agent none
stages {
stage('Build Artefact') {
agent { docker 'build-agent' }
steps {
< I want to create the artefact to deploy to a side car container here >
}
}
stage('Deploy Artefact') {
agent { docker 'side-car' }
steps {
< I want to deploy the artefact created in the previous stage here >
}
}
}
}
我正在努力解決的問題是如何將文件從“Build Artefact”階段使用的容器傳遞到“Deploy Artefact”中使用的容器,據我所知, stash
不會跨容器工作,除非有人否則有經驗。
根據 Jenkins 文檔,您可以使用 args 參數為聲明性管道語法指定卷:
pipeline {
agent {
docker {
image 'maven:3-alpine'
args '-v $HOME/.m2:/root/.m2'
}
}
stages {
stage('Build') {
steps {
sh 'mvn -B'
}
}
}
}
但是,我想知道是否有更優雅的解決方案不涉及傳遞卷。
如果工件不太大,您可以使用stash
指令在不同容器中的階段之間傳遞一些文件。
pipeline {
agent none
stages {
stage('Build Artefact') {
agent { docker 'build-agent' }
steps {
sh 'make'
stash includes: 'myartefact', name: 'ARTEFACT'
}
}
stage('Deploy Artefact') {
agent { docker 'side-car' }
steps {
unstash 'ARTEFACT'
sh 'deploy.sh'
}
}
}
}
有關完整詳細信息,請參閱存儲文檔
當您使用“docker run”時,您可以使用 -v 參數將邏輯 docker 卷映射到您的物理 jenkins 目錄(例如自己的作業工作區)。
這里更詳細:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.