gpt4 book ai didi

docker - 没有让Docker在Jenkins中运行

转载 作者:行者123 更新时间:2023-12-02 20:49:00 27 4
gpt4 key购买 nike

我有一个Jenkins-Pipeline,可以成功构建docker-image。
但是,当涉及到运行docker-image时,它会失败。
在docker镜像中,我有一些要与ctest一起运行的API测试。
可以通过在目录/ testing中调用test来执行测试。

有什么建议么?

pipeline {

agent {label 'apitest-centos7'}
stages {
stage('cleanup'){
steps{
cleanWs()
}
}

stage('git checkout Dockerfile') {
steps{
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'ebf01b-3gf93-4f8e-9f69-97ffgff308af', url: 'http://gitlab.somecompany.loc/somecompany/MyApiTestingTools.git']]])
sh 'ls'
}
}

stage('build Dockerimage'){
steps{
dir('dockerbuild'){
fileExists 'Dockerfile'
sh 'sudo docker build --no-cache=true -t apitestimage .'
}
}
}

stage('start Dockerimage and Tests') {
steps{
dir("dockerbuild"){
withDockerContainer(args: "-ti apitestimage bash -c 'cd testing && ctest", image: 'apitestimage') {
}
}
}
}
}
post {
always {
/*mattermostSend color: 'good', message: 'API-Tests have been executed'*/
deleteDir() /* clean up our workspace */
}
success {
mattermostSend color: 'good', message: 'API-Tests succeded', channel: 'api-tests'
}
unstable {
mattermostSend color: 'warning', message: 'API-Tests are unstable', channel: 'api-tests'
}
failure {
mattermostSend color: 'danger', message: 'API-Tests have failed', channel: 'api-tests', icon: 'https://talks.bitexpert.de/zendcon16-jenkins-for-php-projects/images/jenkins.png'
}
changed {
mattermostSend color: 'warning', message: 'API-Tests have changed', channel: 'api-tests'
}
}
}

最佳答案

我猜出3个错误原因:

  • 您试图在没有tty的非交互环境(jenkins构建环境)中使用tty(-it选项)启动容器交互模式,这可能会导致
  • 出现一些问题
  • 您要给图像名称两次:argsimage
  • 您没有关闭报价

  • 尝试更改为此:
    withDockerContainer(args: "bash -c 'cd testing && ctest'", image: 'apitestimage')

    顺便说一句,您可以考虑使用 docker pipeline API:
    stage('build Dockerimage') {
    steps {
    script {
    apitestimage = docker.build('apitestimage', '--no-cache=true dockerbuild')
    }
    }
    }

    stage('start Dockerimage and Tests') {
    steps{
    script {
    apitestimage.inside {
    sh 'cd testing && ctest'
    }
    }
    }
    }

    docker.inside在当前工作空间上安装一个卷时,您甚至可以避免创建镜像的步骤(您不发布它,因此我猜它仅对于测试是必需的),并从基本镜像中启动必要的命令以构建测试环境并启动测试。

    关于docker - 没有让Docker在Jenkins中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45219276/

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