Pipeline Operations 是 Acquia Pipelines CLI 中的一组流水线操作能力,用于在 Acquia Cloud 上触发、监控和管理 CI/CD 流水线任务。它适用于用户询问流水线状态、CI 构建状态、触发构建、流式查看流水线日志、终止任务或检查流水线是否通过等场景。
【主要能力】
- 启动流水线构建:支持当前分支、指定分支、写入部署分支、携带环境变量、立即流式输出日志、设置日志流重试与延迟、从外部(非 Acquia)仓库拉取源码、保留构建容器以便调试、使用 codebase ID 替代 application ID。
- 查看任务状态:可查询最新任务、指定任务、指定分支最新任务,并支持机器可读的 JSON 输出。状态值包括 succeeded、aborted、system failure、build error、queued、running、paused。
- 查看与流式输出日志:可查看最新或指定任务日志、使用 --tail 实时跟踪、将日志保存到文件。
- 列出任务:pipelines list-jobs 可列出近期任务及其 ID、状态和分支。
- 终止任务:pipelines terminate-job 可取消正在运行的任务。
- 加密流水线变量:pipelines encrypt 用于加密敏感值,供 acquia-pipelines.yml 使用。
- GitHub 集成:pipelines github:connect 与 pipelines github:disconnect 用于连接或断开 GitHub 仓库。
【使用方式】 使用前需参考 Getting Started 完成安装、认证并找到 application ID。启动任务前建议先用 pipelines list-applications 确认应用 ID,并用 pipelines status --job-id=latest 检查分支上是否已有任务在运行。注意 pipelines start 会立即触发,没有确认提示。
典型命令示例(保留代码原样):
- 确认应用:pipelines list-applications
- 启动当前分支:pipelines start --application-id=1g2i3b4b5o6u7s
- 指定分支:pipelines start --application-id=1g2i3b4b5o6u7s --vcs-path=feature/my-branch
- 写入部署分支:pipelines start --application-id=1g2i3b4b5o6u7s --vcs-path=feature/my-branch --deploy-vcs-path=deploy/my-branch
- 携带环境变量:pipelines start --application-id=1g2i3b4b5o6u7s --vcs-path=main -D MY_VAR=foo -D ANOTHER_VAR=bar
- 启动并流式输出:pipelines start --application-id=1g2i3b4b5o6u7s --tail
- 带延迟与重试:pipelines start --application-id=1g2i3b4b5o6u7s --retries=3 --delay=5
- 外部仓库:pipelines start --application-id=1g2i3b4b5o6u7s --source-vcs-uri=git@github.com:myorg/myrepo.git --source-key-path=~/.ssh/id_rsa --vcs-path=main(注意传私钥路径,不是 .pub 文件)
- 保留容器调试:pipelines start --application-id=1g2i3b4b5o6u7s --keep-process-alive
- 使用 codebase ID:pipelines start --codebase-id=abcd1234-5678-90ab-cdef-000000000000 --vcs-path=main
- 查看状态:pipelines status --application-id=1g2i3b4b5o6u7s --job-id=latest 或 --job-id=latest:main,或 --format=json
- 查看日志:pipelines logs --application-id=1g2i3b4b5o6u7s --job-id=latest,加 --tail 实时跟踪,或重定向到文件
- 列出任务:pipelines list-jobs 1g2i3b4b5o6u7s
- 终止任务:pipelines terminate-job --application-id=1g2i3b4b5o6u7s --job-id=job-abc12345
- 加密变量:pipelines encrypt
【容器配置】 容器配置定义在仓库根目录的 acquia-pipelines.yml 中,pipelines start 会自动读取,没有对应的 CLI 标志。可配置 PHP 版本(如 8.1、8.2、8.3,具体支持取决于 Acquia Cloud 订阅)、MySQL 服务(127.0.0.1:3306,凭据 root:root)、全局环境变量、加密敏感值以及 SSH 密钥(用于拉取私有依赖)。
敏感变量需先加密再引用: variables: global: MY_SECRET: secure: <paste encrypted output here> 加密后的值在构建步骤中可通过 $MY_SECRET 使用。SSH 私钥可先执行 cat ~/.ssh/id_rsa | pipelines encrypt,再在 YAML 的 ssh-keys 下引用,密钥会在步骤运行前自动加载到构建容器。多服务示例可同时包含 PHP、MySQL 和 Node。
【配置校验】 没有 pipelines validate 命令,需手动检查:确认文件是有效 YAML(如用 python3 的 yaml.safe_load 校验),确认已提交并推送(pipelines 从远程分支读取),然后触发并流式输出日志以尽快发现运行时错误。
【CI/CD 集成】 可在 GitHub Actions 工作流中安装 Pipelines CLI、配置凭据并启动流水线(含 --tail)。也可在 shell 脚本中轮询状态:启动后循环读取最新任务状态,成功后退出 0,遇到 build error、aborted 或 system failure 时输出日志并退出 1,每次间隔 15 秒。
【最佳实践】
- 启动前先用 pipelines list-applications 确认应用 ID。
- 开发期间使用 --tail 立即流式查看日志。
- 使用 pipelines configure 安全存储凭据,不要硬编码。
- 重新触发前先检查 pipelines status --job-id=latest,避免重复构建。
- 对 acquia-pipelines.yml 中的任何敏感值使用 pipelines encrypt。
【常见问题与排查】
- Unable to authenticate:凭据未配置或已过期,重新运行 pipelines configure。
- No pipeline configuration found:仓库缺少 acquia-pipelines.yml,添加构建定义文件并推送。
- The vcs branch does not exist in remote:分支未推送到 Acquia 远程,先执行 git push acquia feature/my-branch。
- The build file has local uncommitted changes:acquia-pipelines.yml 有未提交改动,提交并推送该文件。
- Badly formed job:任务 ID 无效或过期,用 pipelines list-jobs 查找有效任务 ID。
【限制】 pipelines start 会立即触发且无确认提示;容器配置只能通过 acquia-pipelines.yml 定义,没有 CLI 标志;没有 pipelines validate 命令;支持的 PHP 版本取决于 Acquia Cloud 订阅。