SuperAPI AI 工具集

pull-push

部署与运维

查看项目

更新于 10-15 08:17

技能介绍

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