跳到主要内容

动作运行时信息

在动作执行期间,刻行平台会自动注入一些环境变量,并提供相应的辅助步骤,方便动作与平台进行数据交互。

环境变量

除了系统预设的环境变量,你也可以在动作中自行定义其他变量,供程序在运行过程中读取使用。

请务必 避免 与平台保留名称冲突,以免引发意外错误。系统保留变量如下表所示:

环境变量名称默认值描述
COS_FILE_VOLUME/cos/files记录的挂载目录
COS_CODE_VOLUME/cos/codes代码的挂载目录
COS_BIN_VOLUME/cos/bins二进制文件的挂载目录
COS_BUNDLE_VOLUME/cos/bundles批量测试中测试程序的挂载目录
COS_ARTIFACT_VOLUME/cos/artifacts批量测试的 artifact 目录
COS_OUTPUT_VOLUME/cos/outputs批量测试输出文件的目录
COS_ORGID组织 ID
COS_USERID用户 ID
COS_WAREHOUSEIDWarehouse ID
COS_PROJECT当前 Action 运行项目 SLUG
COS_PROJECTID项目 ID
COS_RECORDID记录 ID
COS_ENDPOINT刻行 API 地址
COS_TOKENCLI 和 API TOKEN

上述环境变量中部分值为空,这些属于可选项。若存在,其值为 UUID 格式的 ID 信息;若不存在,则为空。

COS_TOKEN

COS_TOKEN 会在动作启动时自动注入到环境变量中,其权限与触发者账号 完全一致

进行跨项目操作时,请确保动作触发者拥有目标项目的相应权限,否则相关 API 调用将失败。

使用输出目录创建和更新现有记录

在 Action 的运行时,可以使用 COS_TOKEN 来调用 OpenAPI 或 coCLI 来完成几乎所有的平台操作。

对于创建和更新记录的常见操作,也可以按指定的文件结构输出,动作运行环境自动完成记录创建和更新。

当动作运行结束后,平台会自动扫描 COS_OUTPUT_VOLUME 下的特定目录结构,并根据配置文件自动创建或更新记录,同时上传相关文件。

目录结构规范

请在挂载的 COS_OUTPUT_VOLUME 目录内,按照以下结构存放文件:

$COS_OUTPUT_VOLUME
└── records
├── 记录目录1/ # 任意命名
│ ├── front-001.jpg # 待上传的文件
│ ├── front-002.jpg
│ └── .cos/
│ └── record.patch.json
└── 记录目录2/
├── rear-001.jpg
├── rear-002.jpg
└── .cos/
└── record.patch.json

关键要求:

  • /records 下每个一级子目录表示一个记录操作。
  • 每个记录目录内必须包含一个 .cos/ 子目录。
  • .cos/ 目录必须包含一个 record.patch.json 文件。
  • 记录目录中的其他文件会自动上传至对应记录。

声明文件格式

record.patch.json 定义记录的创建或更新操作,格式如下:

{
"projectSlug": "项目slug", // 可选,默认使用当前项目
"id": "记录的 UUID", // 更新或删除操作时必填
"labels": [],
"title": "记录标题", // 创建记录时必填
"description": "记录描述", // 可选
// 其他 record 属性,可选
"patch": [
// RFC 6902 JSON Patch 标准
{ "op": "replace", "path": "/title", "value": "Cam-front (night)" },
{ "op": "add", "path": "/labels/-", "value": "night-run" },
{ "op": "remove", "path": "/labels/0" },
{ "op": "add", "path": "/files/path/to/file", "value": "../1.jpg" }
]
}

该 JSON 文件主要包含三个部分:

  • 特殊属性:如需要进行跨项目操作,请指定 projectSlug
  • 常规属性:描述记录的基本信息,未指定 id 时表示创建新记录。
  • patch 数组:提供细粒度的属性修改控制,格式遵循 RFC 6902 标准。