您可以在 Cloud Build 中添加一个步骤。我不知道您是如何运行测试的,但这里有一个在 python3.7 上下文中运行脚本的示例
- name: 'python:3.7'
entrypoint: 'bash'
args:
- '-c'
- |
run the python script that you want
pip install and others.
更新
在您的部署功能之前添加此步骤。如果步骤失败(退出代码不是 0),则云构建过程停止并且不执行部署。
更新 2
Cloud Build 的概念非常简单。您加载一个容器(在 中表示name
)。在容器中,只有卷/workspace
被附加并保持从一个步骤到下一个步骤。
这个概念非常重要。如果您在一个步骤中设置环境变量或其他,则后面的步骤将失去此上下文。只/workspace
保留 的文件。仅当当前正确完成(退出代码= 0)时才调用下一步。
当一个容器被加载时,一个命令被触发。如果您使用cloud builder,则默认调用默认入口点(例如,gcloud Cloud Builder 会自动启动 gcloud 命令)。然后你只需要添加 args 数组来提交到这个入口点。例子
- name: 'gcr.io/cloud-builders/gcloud'
args:
- functions
- list
此命令将gcloud functions list
with表示gcloud
为入口点,functions
and 表示list
为 args。
如果你的容器没有入口点(比如 python 容器)或者你想覆盖你的入口点,你可以用entrypoint
关键字指定它。在我的第一个代码示例中,需要很少的 linux 概念。入口点是 bash。arg-c
用于执行命令。管道|
if 用于允许多命令(多行)命令条目。
如果你只有一个 python 命令要启动,你可以这样做:
- name: 'python:3.7'
entrypoint: 'python3'
args:
- 'test_main.py'
- '.'
但是,您编写的步骤将不起作用。为什么?回到我解释的开头:只/workspace
保留文件。如果您执行 a pip3 install
,则文件不会写入/workspace
目录中,而是写入系统的其他位置。当您切换步骤时,您会失去此系统上下文。
这就是为什么多行命令很有用
- name: 'python:3.7'
entrypoint: 'bash'
args:
- '-c'
- |
pip3 install -r requirements.txt
python3 test_main.py .
希望这有帮助!