Pull & Push 是 Acquia CLI 中用于在本地环境与 Acquia Cloud 之间同步代码、数据库和文件的技能。该技能仅适用于 ACE(Acquia Cloud Enterprise)订阅;若使用 MEO(Multi-site Enterprise Operations),数据库和文件操作需参考 MEO Site Instances。
适用场景包括:将本地环境与 Cloud Platform 环境同步、从云端拉取代码、数据库或文件到本地、将代码、数据库、文件或构建产物推送到云端。
Pull:从云端复制到本地
拉取全部(代码 + 数据库 + 文件)
acli pull:all
别名:acli refresh、acli pull。执行后会提示选择环境,然后将代码、数据库和文件复制到本地环境。
选项:
acli pull:all \
--dir=/path/to/project \
--no-code \ # 跳过代码
--no-databases \ # 跳过数据库
--no-files \ # 跳过文件
--no-scripts # 跳过拉取后脚本
仅拉取代码
acli pull:code
从选定的 Cloud 环境拉取最新代码到本地目录。
acli pull:code --dir=/path/to/project
仅拉取数据库
acli pull:database
别名:acli pull:db。将 Cloud 环境的数据库备份导入到本地数据库。
选项:
acli pull:database \
--on-demand \ # 强制生成全新的按需备份(不使用缓存)
--no-import \ # 下载备份文件但不导入
--multiple-dbs # 下载多个数据库(多站点)
仅拉取文件
acli pull:files
将 Cloud 环境中的 Drupal 公共文件(sites/default/files)复制到本地。
手动运行拉取后脚本
如果在拉取时跳过了脚本,可单独运行:
acli pull:run-scripts
acli pull:run-scripts --dir=/path/to/project
Push:从本地复制到云端
推送数据库
acli push:database
别名:acli push:db。将本地数据库上传到 Cloud Platform 环境。需要本地和远端数据库均已配置。
推送文件
acli push:files
将本地 Drupal 公共文件复制到选定的 Cloud 环境。
推送代码(仅 IDE)
acli push:code
从 Cloud IDE 将代码推送到 Cloud Platform 环境。该命令仅在 Cloud IDE 或 Lando 环境内可用。
构建并推送代码产物
构建项目并将编译后的产物推送到 Cloud 环境或自定义 git 远端:
acli push:artifact
常用选项:
# 推送到 Cloud 上的指定分支
acli push:artifact --destination-git-branch=deploy/main
# 推送到指定标签
acli push:artifact --destination-git-tag=release-1.2.3
# 推送到外部 git URL(例如 GitHub)
acli push:artifact --destination-git-urls=git@github.com:myorg/myrepo.git
# 试运行——只构建不推送
acli push:artifact --no-push
# 在指定目录中构建
acli push:artifact --dir=/path/to/project
# 跳过清理步骤
acli push:artifact --no-sanitize
典型工作流
刷新本地开发环境:
acli pull:all
仅拉取数据库(测试时最快):
acli pull:database --on-demand
将构建产物部署到 Cloud:
acli push:artifact --destination-git-branch=tags/deploy-branch
同步文件到生产环境(谨慎使用):
acli push:files
最佳实践
- 推送前始终先拉取——避免覆盖 Cloud 上的近期变更。
- 使用
--on-demand获取新鲜数据——默认拉取使用缓存备份,--on-demand会强制生成新的备份。 - 使用
--no-push测试产物构建——推送前验证产物是否正确。 - 在 CI 中使用
--no-scripts——拉取后脚本是为本地开发设计的,不适用于 CI 流水线。 - 推送数据库前先备份——
push:database会覆盖远端数据库。
故障排查
“Local database not found”:pull:all 和 pull:database 需要本地数据库正在运行。确保本地 Drupal 栈(Lando、DDEV 等)已启动。
推送时“Access denied”:确认 SSH 密钥已设置,且账户对环境具有写权限:
acli ssh-key:list
acli auth:me
产物推送失败:推送前检查 composer install 及所有构建步骤是否无错误完成:
acli push:artifact --no-push # 试运行以检查
相关主题
- Application Management——查找环境 ID
- SSH Key Management——身份验证
- Remote Access——在 Cloud 环境上使用 SSH 和 Drush