使用GitLab CI与Python的“onbuild”图像,requirements.txt中的包似乎没有安装

我正在尝试使用testing项目https://gitlab.com/khpeek/CI-test来熟悉Gitlab CI环境。 该项目有以下.gitlab-ci.yml

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

问题是CIpipe道中的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 python:2.7-onbuild图像,然而, pip install -r requirements.txt应该在生成上运行。 那为什么pytest找不到?

如果您查看链接到的Dockerfile ,您将看到pip install -r requirements.txt是onbuild命令的一部分。 如果您想从第一个容器创build一个新的容器并安装一堆需求,这将非常有用。 因此, pip install -r requirements.txt命令不会在CIpipe道的容器中执行,如果是的话,甚至在克隆gitlab存储库之前,它将在一开始就执行。

我build议你这样修改你的.gitlab-ci.yml文件

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

问题似乎是间歇性的:虽然第一次运行testing(最初失败)花了61分钟,但现在大概需要一分钟(请参阅下面的屏幕截图)。

作为参考,testing库位于https://gitlab.com/khpeek/CI-test 。 (我不得不通过一些pip install来添加一个before_script来使工作成功)。

在这里输入图像说明