如何在单独的 Docker 容器中对 Jenkins 进行 运行 单元测试?
How to run unit tests in Jenkins in separate Docker containers?
在我们的代码库中,我们有多个神经网络(分类、对象检测等),我们为此编写了一些单元测试,我们希望在 Jenkins 中的某个特定点(特定点)运行是不相关的,例如,每当我们合并主分支中的某些功能分支时)。
问题是由于外部限制,每个神经网络都需要另一个版本的 keras/tensorflow 和一些其他包,所以我们不能 运行 它们都在同一个 Jenkins 环境中。显而易见的解决方案是 Docker 容器(我们为每个容器专门设置了 Docker 图像),理想情况下我们希望告诉 Jenkins 在我们预先指定的 Docker 容器中执行每个单元测试.
有谁知道如何用 Jenkins 做到这一点?我在网上搜索过,但我找到的解决方案对我来说似乎有点老套。
它看起来像是 Jenkins 管道的候选者,especially docker agents
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 容器来完成工作。你说你已经有了图像,所以你已经完成了大部分工作。
在我们的代码库中,我们有多个神经网络(分类、对象检测等),我们为此编写了一些单元测试,我们希望在 Jenkins 中的某个特定点(特定点)运行是不相关的,例如,每当我们合并主分支中的某些功能分支时)。
问题是由于外部限制,每个神经网络都需要另一个版本的 keras/tensorflow 和一些其他包,所以我们不能 运行 它们都在同一个 Jenkins 环境中。显而易见的解决方案是 Docker 容器(我们为每个容器专门设置了 Docker 图像),理想情况下我们希望告诉 Jenkins 在我们预先指定的 Docker 容器中执行每个单元测试.
有谁知道如何用 Jenkins 做到这一点?我在网上搜索过,但我找到的解决方案对我来说似乎有点老套。
它看起来像是 Jenkins 管道的候选者,especially docker agents
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 容器来完成工作。你说你已经有了图像,所以你已经完成了大部分工作。