云构建无法打开Requirements.txt

时间:2020-10-16 09:51:47

标签: google-cloud-platform yaml google-cloud-build

我想设置一个云构建触发器,以便每次我修改(提交和推送)main.py时,它都使用test_mainpytest.py执行pytest

我有一个看起来像这样的项目:

My_Project\function_one\
                        main.py
                        deploy.yaml
                        requirements.txt
                        dir_pytest\
                                   test_mainpytest.py

我的deploy.yaml包含以下步骤:

steps:
  - name: 'python'
    args: ['pip3', 'install', '-r', 'My_Project/function_one/requirements.txt', '--user']
  - name: 'python'
    args: ['python3', 'pytest', 'My_Project/function_one/dir_pytest/']

此刻,我只想尝试使用触发器执行pytest。当我执行云构建触发器时,出现此错误:

ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'My_Project/function_one/requirements.txt'

我的项目也保存在Google云存储库中。

编辑:

我尝试在步骤中添加dir,所以目前看起来像这样:

steps:
  - name: 'python'
    dir: 'MyProject/function_one/'
    args: ['pip3', 'install', '-r', 'My_Project/function_one/requirements.txt', '--user']
  - name: 'python'
    dir: 'MyProject/function_one/'
    args: ['python3', 'pytest', 'My_Project/function_one/dir_pytest/']

但是我仍然收到错误消息,(我还尝试将dir放在args之后,但是并没有太大改变

我也注意到了;在Cloud Build中执行触发器时; 2行:

Initialized empty Git repository in /workspace/.git/
From https://source.developers.google.com/p/my_id_1234/r/My_Project

我应该使用https://source.developers.google.com/p/my_id_1234/r/My_Project并将路径添加到我的requirement.txt和我的py_test目录吗?

2 个答案:

答案 0 :(得分:2)

您能显示整个cloudbuild.yaml吗?如果使用构建触发器,则将存储库直接导入/ workspace中。如果您正在执行git clone,则您的存储库位于带有存储库名称的目录中。区别是:

/workspace/my-repository/My_Project/function_one/requirements.txt

/workspace/My_Project/function_one/requirements.txt

如果没有其他效果,则可以执行ls -R向您显示构建中的目录结构。将其添加为第一个构建步骤:

 - name: 'list recursively'
   args: ['ls', '-R']

答案 1 :(得分:1)

请注意,Cloud Build使用名为/workspace的目录作为工作目录来保留内容。您可以在cloudbuild.yaml文件中添加dir field,以便Cloud Build找到requirements.txt文件,然后运行测试。