【问题标题】:Using GitLab CI with the Python 'onbuild' image, the packages in requirements.txt don't seem to get installed使用带有 Python 'onbuild' 图像的 GitLab CI,requirements.txt 中的包似乎没有安装
【发布时间】:2017-04-10 11:59:55
【问题描述】:

我正在尝试通过一个测试项目https://gitlab.com/khpeek/CI-test 熟悉Gitlab CI 环境。该项目有以下.gitlab-ci.yml

image: python:2.7-onbuild
services:
  - rethinkdb:latest
test_job:
  script:
    - pytest

问题是 CI 管道中的 test_job 作业失败并显示以下错误消息:

Running with gitlab-ci-multi-runner 9.0.1 (a3da309)
  on docker-auto-scale (e11ae361)
Using Docker executor with image python:2.7-onbuild ...
Starting service rethinkdb:latest ...
Pulling docker image rethinkdb:latest ...
Using docker image rethinkdb:latest ID=sha256:23ecfb08823bc5483c6a955b077a9bc82899a0df2f33899b64992345256f22dd for service rethinkdb...
Waiting for services to be up and running...
Using docker image sha256:aaecf574604a31dd49a9d4151b11739837e4469df1cf7b558787048ce4ba81aa ID=sha256:aaecf574604a31dd49a9d4151b11739837e4469df1cf7b558787048ce4ba81aa for predefined container...
Pulling docker image python:2.7-onbuild ...
Using docker image python:2.7-onbuild ID=sha256:5754a7fac135b9cae7e02e34cc7ba941f03a33fb00cf31f12fbb71b8d389ece2 for build container...
Running on runner-e11ae361-project-3083420-concurrent-0 via runner-e11ae361-machine-1491819341-82630004-digital-ocean-2gb...
Cloning repository...
Cloning into '/builds/khpeek/CI-test'...
Checking out d0937f33 as master...
Skipping Git submodules setup
$ pytest
/bin/bash: line 56: pytest: command not found
ERROR: Job failed: exit code 1

但是,存储库中有一个requirements.txt,其中包含单行pytest==3.0.7。在我看来,python:2.7-onbuild 图像的Dockerfile 似乎是pip install -r requirements.txt 应该在构建时运行。那么为什么找不到pytest呢?

【问题讨论】:

    标签: python docker gitlab-ci gitlab-ci-runner


    【解决方案1】:

    如果您查看链接到的Dockerfile,您会发现pip install -r requirements.txtonbuild 命令的一部分。如果您想从第一个容器创建一个新容器并安装一堆需求,这很有用。因此,pip install -r requirements.txt 命令不会在 CI 管道中的容器内执行,如果是,它将在最开始时执行,甚至在克隆 gitlab 存储库之前。

    我建议你用这种方式修改你的.gitlab-ci.yml 文件

    image: python:2.7-onbuild
    services:
      - rethinkdb:latest
    test_job:
      script:
        - pip install -r requirements.txt
        - pytest
    

    【讨论】:

      【解决方案2】:

      问题似乎是间歇性的:虽然第一次运行测试需要 61 分钟(最初失败),但现在需要大约一分钟(见下面的屏幕截图)。

      作为参考,测试存储库位于https://gitlab.com/khpeek/CI-test。 (我必须添加一个 before_script 和一些 pip installs 才能使工作成功)。

      【讨论】:

        猜你喜欢
        • 2021-05-26
        • 2023-01-13
        • 1970-01-01
        • 2020-03-09
        • 2016-10-15
        • 1970-01-01
        • 1970-01-01
        • 2020-06-12
        • 2018-03-07
        相关资源
        最近更新 更多