SuperAPI AI 工具集

setup-external-ci-cd

部署与运维

查看项目

更新于 10-15 19:48

技能介绍

用途:把现有 GitHub/GitLab 或其他 Linux CI 流水线接入 Acquia Cloud Platform,由 CI 构建可部署制品并推送到应用的 Acquia Git 仓库,平台服务端执行 Drupal 部署操作。适用于从 Acquia Pipelines 迁移(沿用部署分支约定)或在 CI 中脚本化制品构建与环境部署。仅适用于拥有独立 Acquia Git 仓库和 dev/test/prod 环境的 Cloud Platform 应用(ACE),不支持 MEO,可先用 acli api:codebases:get-by-application 确认。

主要机制:SSH 密钥用于推送制品;acli push:artifact 构建经过清理的制品(执行 composer install,包含 vendor 与脚手架文件)并推送到部署分支与不可变标签;acli api:environments:code-switch 将环境指向该引用,触发部署与服务器端 post-code-deploy 钩子(updatedb、config:import、cache:rebuild)。部署分支约定:main → pipelines-build-main,master → pipelines-build-master。

前置条件:Cloud Platform 应用与具备 SSH push 权限的用户、仓库管理员权限、标准 docroot/ 布局的 Composer Drupal 代码库(含 drush/drush),运行器需 Linux、匹配应用版本的 PHP、Composer v2、Git、SSH,以及构建主题资源时的 Node/npm。本地工具需确认存在:acli --version,缺失时安装 curl -sSL https://github.com/acquia/cli/releases/latest/download/acli.phar -o /usr/local/bin/acli && chmod +x /usr/local/bin/acli;GitHub 用 gh,GitLab 用 glab。PHP 版本不要臆测,可从 acquia-pipelines 配置、composer config platform.php 或 acli api:environments:find <environmentId>(看 phpVersion 字段)推导,替换模板中的 <PHP_VERSION>。

setup 一次性步骤:1) acli api:accounts:token-create 'BYOT CI/CD' 生成密钥并用 acli auth:login --key/--secret 登录,acli api:accounts:find 验证;2) acli ssh-key:create-upload --filename=acquia_byot_cicd --label='BYOT CI/CD' 生成并注册专用 SSH 密钥;3) 用 acli api:applications:list、acli app:vcs:info、acli api:applications:environment-list 收集 UUID、Git URL 与环境 ID;4) 在 CI 中添加 ACQUIA_CLI_KEY/SECRET、ACQUIA_SSH_PRIVATE_KEY、ACQUIA_SSH_PASSPHRASE、ACQUIA_GIT_URL、ACQUIA_APP_UUID 及各环境 ID 等 secret;5) 创建审批门禁(GitHub Environments 命名 acquia-dev/test/prod,GitLab 用 when: manual);6) 添加 hooks/common/post-code-deploy/drupal-deploy.sh 部署钩子。

流水线三阶段(与提供商无关):Stage 1 CI(每次 push 与 PR)运行 composer validate --strict、composer install、composer audit、phpcs、phpstan;Stage 2 构建推送(仅 push)写入 SSH 私钥、ssh-keyscan、acli auth:login,然后 acli push:artifact "$ACQUIA_DEV_ENV_ID" --destination-git-branch="pipelines-build-main" --destination-git-tag="build-${BUILD_ID}" --no-interaction;Stage 3 部署 acli api:environments:code-switch "$ACQUIA_TEST_ENV_ID" "tags/build-${BUILD_ID}" --task-wait --no-interaction(引用为位置参数,标签须带 tags/ 前缀)。提供商专用模板见 github-actions.md 与 gitlab-ci.md,只读取对应工具的那份。日常操作:push 触发 CI→构建→部署 dev,test/prod 等待审批;回滚可对已有标签再次 code-switch,无需重新构建。管道中每条命令都加 --no-interaction。

常见问题与限制:公钥认证失败需核对密钥、重新粘贴完整私钥并留出传播时间;主机密钥验证失败先 ssh-keyscan;--branch 选项不存在应改用位置参数;标签需 tags/ 前缀;部署未完成就报成功应加 --task-wait;对 codebase ID 报错说明目标是 MEO,不受支持;钩子未执行需确认脚本已提交且可执行。资料未提供具体的费用、定价与完整版官方文档内容。