代码之家  ›  专栏  ›  技术社区  ›  Yu Chen little_birdie

Jenkins docker容器只是挂起,从不执行步骤

  •  0
  • Yu Chen little_birdie  · 技术社区  · 7 年前

    我试图在Jenkins中运行Python映像,用pytest执行一系列单元测试,但Docker出现了一些奇怪的行为。

    我的文件管道是

      agent {
          docker { image 'python:3.6-jessie' }
        }
    
        stages {
          stage('Run tests') {
            steps {
                withCredentials([
                    string(credentialsId: 'a-secret', variable: 'A_SECRET')
                {
    
                  sh label: "Install dependencies", script: 'pip install -r requirements.txt'
                  sh label: 'Execute tests', script: "pytest mytests.py"
                }
         }
      }
    }
    

    -e 环境变量比我定义的要多?),后面是 cat .

             Jenkins does not seem to be running inside a container
                $ docker run -t -d -u 996:994 
        -w /var/lib/jenkins/workspace/myproject 
        -v /var/lib/jenkins/workspace/myproject:/var/lib/jenkins/workspace/myproject:rw,z
        -v /var/lib/jenkins/workspace/myproject@tmp:/var/lib/jenkins/workspace/myproject@tmp:rw,z 
    -e ******** -e ******** python:3.6-jessie cat
    

    docker ps ,我明白了

    CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
    240d00459d92        python:3.6-jessie   "cat"               About a minute ago   Up About a minute                       kind_wright
    

    ? 为什么Jenkins说我不是在一个容器中运行,而它显然为我创建了一个容器?最重要的是,为什么我的 pip install -r requirements 以及其他不执行的步骤?

    1 回复  |  直到 7 年前
        1
  •  5
  •   Yu Chen little_birdie    7 年前

    docker run 命令,因为Jenkins将使用空字符串环境变量编写该命令,如下所示 docker run -e some_env_var=some_value -e = ...

    这将导致容器简单地挂起。

    发生这种情况的迹象表明,您将收到错误消息:

    invalid argument "=" for "-e, --env" flag: invalid environment variable: =
    

    您需要检查Jenkins全局配置,确保没有意外定义任何空环境变量:

    enter image description here

    如果存在这些,则需要删除它们并重新运行。

    推荐文章