用途
该技能用于在脚本、CI/CD 流水线或自动化场景中以非交互方式运行 Acquia CLI(acli)命令,从而以编程方式管理 Acquia Cloud 资源。适用场景包括:在 shell 脚本中自动化 acli 命令、将 acli 集成到 CI/CD 流水线、非交互地运行 acli。
主要能力
- 非交互命令执行:所有 acli 命令都可以通过提供选项实现非交互运行,这在脚本和 CI/CD 中至关重要。基本模式是在交互式命令中提供全部信息,例如
acli ide:create --application=abc123 --label="Automated IDE"。 - 常用选项:
--no-interaction(不提示,信息缺失则失败)、--no-wait(不等待异步操作)、--yes(跳过确认)。 - 简单自动化示例:定时部署脚本(如每晚部署到 staging,使用
acli api:environments:code-switch $ENV_ID $BRANCH,并可通过 cron 运行);缓存清理工作流(acli remote:drush cr,使用set -e在出错时退出)。 - CI/CD 集成:提供 GitHub Actions 和 GitLab CI/CD 配置示例,涵盖安装 acli、认证、部署等步骤。
使用方式
非交互执行:为命令提供全部必要选项,或使用 --no-interaction 等选项。
在 GitHub Actions 中,可在 push 到 main 分支时部署:检出代码、安装 acli(从 GitHub releases 下载并赋予执行权限)、通过环境变量和凭据文件认证、执行部署命令。
在 GitLab CI/CD 中,配置部署阶段、安装并认证 acli,然后执行部署命令,可限定仅对 main 分支生效。
错误处理:检查退出码(使用 $?),或使用 set -e 在首个错误时退出,并配合 trap 捕获错误;可实现重试逻辑(如最多重试 3 次,失败后 sleep 10 秒再试)。
日志与监控:将输出重定向到日志文件,并通过 webhook 发送通知(如 Slack)。
API 密钥认证:在 Acquia Cloud UI 的 Settings → API Tokens 生成 token,复制 Key 和 Secret。使用方式有两种:环境变量(export ACQUIA_KEY、export ACQUIA_SECRET)或凭据文件(~/.acquia/credentials.json,包含 acquia-cloud-api 的 key 和 secret)。安全凭据管理可选 AWS Secrets Manager、HashiCorp Vault 或 GitHub Secrets。
适用场景
- 在 shell 脚本中自动化 acli 命令
- 将 acli 集成到 CI/CD 流水线
- 非交互地运行 acli
- 服务器上的自动化(使用 API 密钥而非浏览器认证)
限制与注意事项
最佳实践:脚本中始终传递 --no-interaction 以防止提示阻塞进程;使用 set -e 在出错时立即退出;安全存储凭据,使用环境变量或密钥管理器,切勿硬编码;在异步操作后使用 app:task-wait 等待完成再执行下一步。
故障排查:
- CI 中认证失败:设置
ACLI_NO_INTERACTION环境变量并显式提供凭据(ACLI_KEY、ACLI_SECRET)。 - 命令挂起等待输入:脚本中始终传递
--no-interaction。 - 退出码未正确传播:在脚本顶部使用
set -e。
补充说明
对于 MEO (V3) 订阅:将 api:environments:code-switch 行替换为 acli api:v3:environments:create-deployment $ENV_ID true $BRANCH;acli remote:drush cr 有对应的 API 驱动等价命令 acli api:v3:environments:clear-caches <environmentId> <domains>。