【发布时间】:2022-01-05 20:10:59
【问题描述】:
具体来说,我想将每个构建移交给 VM 上的代理,然后该代理将发送管道以完全在 docker 代理中执行和构建
【问题讨论】:
标签: jenkins jenkins-pipeline cicd
具体来说,我想将每个构建移交给 VM 上的代理,然后该代理将发送管道以完全在 docker 代理中执行和构建
【问题讨论】:
标签: jenkins jenkins-pipeline cicd
我不确定我是否完全理解了这个问题,但是你可以在代理中运行 docker 容器“代理”。
例如在这里,我选择了一个支持 docker 的代理来运行构建,然后使用 Python 容器来运行某些步骤
pipeline {
agent { label "docker-capable" }
options {
timestamps()
}
stages {
stage("Build the Lambda") { // Runs in container on agent
agent {
docker {
image "python:3.7"
reuseNode true
args "-v /usr/bin/zip:/usr/bin/zip"
}
}
environment {
HOME = "/tmp"
}
steps {
sh "make release"
}
}
stage("Release if Required") { //Runs on agent
when {
anyOf {
branch 'master'
branch 'main'
}
not { buildingTag() }
}
steps {
script {
publishRelease()
}
}
}
您也可以在同一个容器中运行多个阶段,例如
stage("Python Module Testing") {
agent {
docker {
image "python:3.7"
reuseNode true
}
}
environment {
HOME = "/tmp"
// Resolve dependencies
PYTHONPATH = "${WORKSPACE}/package"
}
stages {
stage("Deps") {
steps {
sh("pip install --user --no-cache-dir pylint flake8")
}
}
stage("Pylint") {
steps {
sh("pylint .")
}
}
stage("Flake8") {
steps {
sh("flake 8 .")
}
}
如果您的意思是可以在一个代理上运行一些阶段,在另一个代理上运行一些阶段,那么您也可以在管道顶部不指定和代理阻止,而是为每个阶段执行。
【讨论】: