在 Cloud Build 管道中进行 运行 python 测试的最佳做法是什么?

What is a good practice to run python tests in the Cloud Build pipeline?

我想使用 google Cloud Build 创建一个 CI/CD 管道,以将 python 网络应用程序部署到 App Engine。 我有一个 tests.py 文件,它使用一些第三方库来 运行 一些测试。 在 App Engine 上部署应用程序之前,我希望 Cloud Build 运行 进行测试。为了实现这一点,我创建了这个 cloudbuild.yaml 文件,它在 /workspace 工作目录的 lib 文件夹中安装了一些带有 pip 的包,运行 测试,并在 App Engine 上部署应用程序:

steps:
  - name: "docker.io/library/python:3.7"
    args: ['pip', 'install', '-t', '/workspace/lib', '-r', 'requirements.txt']
  - name: 'docker.io/library/python:3.7'
    args: ["python", "tests.py"]
  - name: 'gcr.io/cloud-builders/gcloud'
    args: ['app', 'deploy']

然而,我很难从 tests 模块的导入语句中访问 /workspace/lib 中 pip 安装的包,因为 /workspace/lib 不在 $PATH 环境变量中。我没有找到从这个配置文件访问云构建器上下文的 PATH 环境变量的方法,所以我现在正在做的是将 /workspace/lib 添加到 python 开头的路径中使用 sys.path 指令文件。

import sys
sys.path.append("/workspace/lib")

有没有更好的方法来 运行 Cloud Build 中需要使用 pip 安装包的测试步骤?

我找到了一种更好的方法,使用 PYTHONPATH 环境变量可以将 /workspace/lib 设置为 /workspace/lib 用于 运行 测试步骤。

steps:
  - name: "docker.io/library/python:3.7"
    args: ['pip', 'install', '-t', '/workspace/lib', '-r', 'requirements.txt']
  - name: 'docker.io/library/python:3.7'
    args: ["python", "tests.py"]
    env: ["PYTHONPATH=/workspace/lib"]