📣
TiDB Cloud Premium 开放公测中。为企业级工作负载提供无限扩展、即时弹性伸缩和高级安全保障。此页面由 AI 自动翻译,英文原文请见此处。

使用 TiDB Cloud Filesystem 在隔离的作业之间交接 CI 制品



此工作流使用 Filesystem 作为隔离的 CI 作业或 runner 之间的持久交接点。当构建输出需要在生产者作业结束后继续保留,并在后续消费者作业中可用,同时又不想引入特定于提供商的制品 API、保留模型和下载工作流时,可以使用此方案。

工作原理

该流水线会将一个 Filesystem 访问令牌和 Region 同时注入到两个作业中。该令牌用于标识 Filesystem。生产者会将输出上传到特定于运行的路径下,例如 /ci/${RUN_ID}/,而消费者则会在另一台 runner 上从该精确路径下载或流式读取数据。两个作业都不需要 TiDB Cloud API key,也不需要复制 ~/.ti/ 目录。

前提条件

在一台受信任的机器上创建一个 Filesystem,并将以下值保存为受保护的 CI Secret 或变量:

TI_FS_TOKEN TI_REGION_CODE

使用 CI 生成的运行标识符(例如 RUN_ID)来隔离并发流水线。

生产者作业

构建制品,然后上传:

tar -czf app.tar.gz ./dist ti fs copy-file \ --from-local ./app.tar.gz \ --to-remote "/ci/${RUN_ID}/app.tar.gz" \ --tag pipeline=build \ --description "artifact for run ${RUN_ID}"

消费者作业

在另一台 runner 上下载并验证该制品:

ti fs copy-file \ --from-remote "/ci/${RUN_ID}/app.tar.gz" \ --to-local ./app.tar.gz \ --create-parents tar -tzf app.tar.gz

对于接受 stdin 的命令,可以避免使用中间本地文件:

ti fs copy-file --from-remote "/ci/${RUN_ID}/app.tar.gz" --to-stdout \ | tar -tzf -

清理与隔离

在所有消费者完成后,仅删除特定于该次运行的目录:

ti fs delete-file --path "/ci/${RUN_ID}" --recursive

使用唯一的运行 ID,并且不要在单个作业中删除整个 Filesystem。删除 Filesystem 需要受信任的控制平面配置,因此应保持为单独所有者执行的操作。

后续内容

文档内容是否有帮助?