问题描述
使用pip或poetry之类的程序包管理器并将CI / CD原则应用于Python项目时,通常的方法是构建两个单独的Docker映像,一个用于生产执行的轻量级映像,另一个包含测试的映像。
在Google Cloud Build中运行这些测试意味着运行自定义步骤,如此处https://cloud.google.com/community/tutorials/cloudbuild-test-runner中的教程所述。这是我的Dockerfile的最后一部分
workdir /myproject
copY run-tests.sh /myproject/run-tests.sh
ENTRYPOINT [ "/myproject/run-tests.sh" ]
其中run-test.sh
的最后一行是:poetry run pytest
。然后,我将以下步骤添加到cloudbuild.yaml中:
- name: "gcr.io/$PROJECT_ID/$REPO_NAME:test-$SHORT_SHA"
id: Run test
dir: /myproject
我的构建因以下错误而失败:
[FileNotFoundError] [Errno 2]没有这样的文件或目录
但是,像docker run -it gcr.io/myproject/myimage:test-1241ead
这样在本地运行映像(我从GCR提取映像)可以正确运行测试。我唯一认为不同的是我的机器(MacOS)和GCP之间的Docker引擎。
Google Cloud Build运行什么版本的Docker?当我转而选择避免使用poetry run
来避免使用虚拟环境时,这一切都奏效,但是我的计算机与GCP上的执行之间的这种不对称让我感到担忧
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)