如何在单独的 Docker 容器中运行 Jenkins 中的单元测试?



在我们的代码库中,我们有多个神经网络(分类、对象检测等(,为此我们编写了一些单元测试,我们希望在 Jenkins 中的某个指定点运行这些单元测试(特定点不相关,例如,每当我们在 master 分支中合并某个特征分支时(。

问题是,由于外部约束,每个神经网络都需要另一个版本的keras/tensorflow和其他一些包,所以我们无法在同一个Jenkins环境中运行它们。显而易见的解决方案是 Docker 容器(我们为每个容器都有专门的 Docker 镜像(,理想情况下,我们希望告诉 Jenkins 在我们事先指定的 Docker 容器中执行每个单元测试。

有谁知道如何用詹金斯做到这一点?我在网上搜索了一下,但我找到的解决方案对我来说似乎有点笨拙。

它看起来像是 Jenkins 管道的候选者,尤其是 docker 代理

pipeline {
agent none
stages {
stage('Back-end') {
agent {
docker { image 'maven:3-alpine' }
}
steps {
sh 'mvn --version'
}
}
stage('Front-end') {
agent {
docker { image 'node:7-alpine' }
}
steps {
sh 'node --version'
}
}
}
}

这允许实际的 Jenkins 代理启动一个 docker 容器来完成这项工作。你说你已经有了图像,所以你大部分时间都在。

最新更新