跳到主要内容

运行时系统

DevStream 提供运行工作流的系统,每个系统由下列唯一ID标识。 本文档用语遵从《DevStream 接口规范》(以下简称接口规范)。

1. shell-python

本运行时系统支持本地命令行调用 Python 语言编写的独立脚本。 默认提供一个本地 Python 3.12 解释器和虚拟环境,供工作流使用。 该默认虚拟环境的标识为 default

1.1. 自定义虚拟环境

考虑本地网络联通性或其他要求,用户可自提供 Python 解释器或构建自定义的 Python 虚拟环境,称为自定义虚拟环境。 本运行时系统扩展接口规范规定的 usr/config.yml 文件,用于记录各个自定义虚拟环境,称为虚拟环境注册表。 该注册表是一个以 environments 为键的 YAML 对象,其值包含以自定义虚拟环境标识为键、对应 Python 解释器路径为值的子对象。 所有自定义虚拟环境由用户完全接管,DevStream 不做干预或维护。

示例:

environments:
myenv: "/path/to/python/bin"

示例中的虚拟环境注册表只包含一个名为 myenv 的用户自定义虚拟环境,对应 Python 解释器位于 /path/to/python/bin

如果要替代本运行时默认的 Python 环境,需将 default 加入虚拟环境注册表,并指向一个用户自定义虚拟环境。 那么,所有原使用默认虚拟环境的工作流都将改在用户指向的虚拟环境中运行。

1.2. 运行时属性

运行时属性在工作流定义 interface.yml 中声明。 按照接口规范,这些属性置于工作流定义中的 runtime 属性值中。 下面给出一个完整示例,系统属性在后续小节定义。

runtime:
id: shell-python
run:
- $__python__ $__idir__/myscript.py $__input__
venv: myenv
python: ^3.1.0
requirements: myreq.txt

1.2.1. run(必选)

工作流运行的命令行,带合适参数调用 Python 脚本,支持多个步骤。 属性值是一个 shell 语法的命令行列表,按顺序执行。 Python 命令使用内置变量 __python__。 实现工作流的 Python 脚本存储于工作流定义目录下。 工作流定义目录路径可通过内置变量 __idir__ 获取。 运行工作流时,执行 shell 命令行的工作目录通常不是工作流定义目录,所以命令行调用 Python 脚本应前缀 __idir__ 路径。

在上述示例中,该工作流在其定义目录下的 Python 脚本 myscript.py 中实现,调用时将用户输入 __input__ 作为命令行参数。

1.2.2. venv(可选)

虚拟环境唯一标识,也称作虚拟环境名。 如果此标识在虚拟环境注册表,则使用对应的用户自定义虚拟环境;否则,本运行时系统创建或重用名为该标识的内置虚拟环境,按工作流声明的 Python 版本保持兼容并安装依赖包。 多个工作流可声明使用同一个虚拟环境,即设置相同的 venv 值,以减少系统维护的虚拟环境数量。

1.2.3. python(可选)

工作流运行要求的 Python 版本号。

1.2.4. requirements(可选)

工作流运行要求的包文件,用于在虚拟环境中安装依赖。 采用 requirements 文件标准格式