我有一个非常简单的Jenkins管道,定义为Jenkinsfile
。
flake8
来测试代码。 当我在容器中运行命令时,似乎Jenkins不在容器中执行命令,或者实际上是将我的整个存储库/工作文件夹装入其中。
node {
def app
try {
stage("Git Checkout") {
checkout scm
}
stage('Build image') {
app = docker.build("repo/myimage", "./src")
}
stage('Test image') {
app.inside {
sh 'ls -la'
sh 'flake8 --config=.flake8 .'
}
}
} catch(error) {
throw error
} finally {
script {
sh "docker system prune -a -f"
}
}
}
.
src/
...
.flake8
Dockerfile
utils/
...
README.md
Jenkinsfile
现在问题是Jenkinsfile的“测试图像”步骤中的ls -la
命令实际上没有输出预期的./src
文件夹。它输出我存储库的根文件夹。这意味着我不在构建的预期图像中,或者Jenkins正在将工作文件夹安装到容器中。
这导致外壳程序找不到.flake8
配置文件和其他路径问题。