jenkinspipe道跨多个docker的图像

在Jenkins中使用声明式pipe道,如何在多个版本的Docker镜像上运行阶段。 我想在python 2.7,3.5和3.6上执行下面的jenkinsfile。 以下是在Docker容器中构build和testingpython项目的pipe道文件

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成功? 希望如果一个testing失败,那么testing失败的版本是明显的。

或者是我所要求的声明式pipe道不可能(例如,脚本pipe道可能是最优雅地解决这个问题的东西)

作为比较,这是Travis CI如何让你指定运行在不同的Python版本 。

我不得不求助于一个脚本化的pipe道,并结合所有阶段

 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' } } } 

生成的pipe道看起来像

在这里输入图像说明

理想情况下,我们可以将每个工作分解成几个阶段(安装,构build,testing),但UI 目前不支持这个工作 。