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

标签 python continuous-integration google-cloud-build

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

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 环境变量中。我没有找到从这个配置文件访问 cloud builder 上下文的 PATH 环境变量的方法,所以我现在正在做的是将/workspace/lib 添加到我的 python 文件开头的路径中。路径说明。

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

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

最佳答案

我找到了一种更好的方法来使用 PYTHONPATH 环境变量,该变量可以设置为 /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"]

关于python - 在 Cloud Build 管道中运行 python 测试的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56945228/

相关文章:

visual-studio - 使用 VNext Build 触发 VNext Build

Jenkins 和多配置(矩阵)作业

java - 如何修复MAVEN中的 "Either artifact or artifactItems is required"错误

docker - 为 gcloud 构建提交指定 Dockerfile

Python tkinter .pack/.pack_forget 内存问题

python - 如何将函数应用于列表中的列表

python - 是否可以在模型中填充 SQLalchemy 外键并让它加载相关对象

python - cv2.VideoCapture 无法在 Mac 主机上的 docker 容器中工作

maven - IntelliJ、Maven、JRebel(?)、Tomcat 和持续集成。如何?

google-cloud-build - 谷歌云构建 : Clone Private Repository on google Cloud Repository failing