gpt4 book ai didi

docker - 跨多个 Docker 镜像的 Jenkins 管道

转载 作者:行者123 更新时间:2023-12-04 23:38:38 24 4
gpt4 key购买 nike

在 Jenkins 中使用声明性管道,我如何跨多个版本的 docker 镜像运行阶段。我想在 python 2.7、3.5 和 3.6 上执行以下 jenkinsfile。下面是一个用于在 docker 容器中构建和测试 python 项目的管道文件

pipeline {
agent {
docker {
image 'python:2.7.14'
}
}

stages {
stage('Build') {
steps {
sh 'pip install pipenv'
sh 'pipenv install --dev'
}
}

stage('Test') {
steps {
sh 'pipenv run pytest --junitxml=TestResults.xml'
}
}
}

post {
always {
junit 'TestResults.xml'
}
}
}

确保相同步骤在 python 3.5 和 3.6 中成功的最少代码量是多少?希望如果测试失败,很明显测试失败的版本。

或者我所要求的对于声明性管道来说是不可能的(例如,脚本化管道可能是最优雅地解决这个问题的方法)

作为对比,这就是 Travis CI let's you specify runs across different python version .

最佳答案

我不得不求助于脚本化的管道并结合所有阶段

def pythons = ["2.7.14", "3.5.4", "3.6.2"]

def steps = pythons.collectEntries {
["python $it": job(it)]
}

parallel steps

def job(version) {
return {
docker.image("python:${version}").inside {
checkout scm
sh 'pip install pipenv'
sh 'pipenv install --dev'
sh 'pipenv run pytest --junitxml=TestResults.xml'
junit 'TestResults.xml'
}
}
}

结果管道看起来像

enter image description here

理想情况下,我们能够将每个工作分解为多个阶段(设置、构建、测试),但是
用户界面 currently doesn't support this ( still not supported )。

关于docker - 跨多个 Docker 镜像的 Jenkins 管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46458941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com