云构建无法打开 requirements.txt

Cloud build can't open requirements.txt

我想设置一个云构建触发器,这样每次我修改(提交和推送)main.py,它都会执行 test_mainpytest.pypytest

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

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/']

但我仍然得到错误,(我也尝试在 args 之后放置 dir 但它并没有太大变化

我也注意到了;在 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 目录吗?

你能展示一下你的整个 cloudbuild.yaml 吗?如果您使用的是构建触发器,则存储库将直接导入到 /workspace 中。如果您正在执行 git 克隆,那么您的存储库位于具有存储库名称的目录中。区别是:

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

对比

/workspace/My_Project/function_one/requirements.txt

如果没有别的办法,您可以ls -R向您展示构建中的目录结构。将其添加为第一个构建步骤:

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

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