我想设置一个云构建触发器,以便每次我修改(提交和推送)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
目录吗?
答案 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
文件,然后运行测试。