drupal/drupal_automatic_updater

更新Drupal核心和贡献模块。仅兼容Drupal 8及以上版本。

1.0.4-beta6 2024-02-02 21:17 UTC

README

一个用于自动化Drupal 8+站点更新的命令行工具,具有以下功能:

  • 多站点完全自动化更新
  • 可选自动提交并推送到Git仓库
  • 自动下载生产数据库(如果存在drush别名)
  • 更新前备份数据库
  • 回滚站点以供手动测试更新部署的功能,在生产部署之前
  • git提交中使用的更新详细摘要
  • 可选发送包含详细摘要的电子邮件通知
  • 处理可能被项目覆盖的脚手架文件的选择(如果你已经以其他方式处理了这些文件)
  • 格式化的日志和日志显示命令,可快速查看最后运行命令生成的任何消息
  • 正确处理多站点配置

注意:此项目仍在测试阶段。如果您有兴趣为该项目做出贡献,请欢迎克隆它并提交带有更改的pull请求。我只需您首先创建一个可以链接到pull请求的问题。

所需:有人编写自动化测试!我不确定要编写什么类型的测试,并且没有太多时间来处理它,因此在此方面提供帮助将受到欢迎。

安装

您实际上需要使用的唯一东西是编译的二进制文件。前往最新版本,在assets下下载drupalup.phar文件。将此文件放置在路径中的某个位置(例如,/usr/local/bin),删除.phar扩展名,并确保它具有执行权限。

然后,您只需按照以下说明设置配置文件。您可以选择配置cron作业以定期运行更新,只要运行cron作业的用户有权推送您的Git远程仓库。

编译二进制文件

代码库不包含编译二进制文件的代码。相反,我选择使用出色的clue/phar-composer库。只需在系统中的某个位置安装它,然后您就可以运行

phar-composer build [/path/to/this/script/root] [/path/to/this/script/root/build/drupalup.phar]

配置

更新程序将在以下目录中查找其配置文件,首先查找顺序中找到的第一个

  • ~/drupalup
  • ~
  • /usr/local/etc/drupalup
  • /usr/local/etc

主要配置文件必须命名为drupalup.settings.yml,并放置在上述位置之一。所需的次要配置文件是drupalup.sites.yml,它也必须在上述位置之一,理想情况下与drupalup.settings.yml在同一个位置,以便更容易维护。

浏览到源代码中的sample-config文件夹,并下载它们作为起点。它们包含注释并已完全文档化,因此在此不详细说明。

先决条件

Git

Git必须安装在系统上,因为它将用于检查代码库的当前状态,以及执行任何git操作(如果不在dry-run模式下运行更新)。

当运行命令时,它需要确保代码库没有新文件或修改过的文件,并且它目前位于适当的分支上。这是为了防止在站点目前有其他工作进行时破坏某些内容。

当运行更新并且不在dry-run模式下时,它还将用于将更新提交到更新分支并将它们推送到远程仓库。

Composer

Composer必须安装在系统上,因为它是用于安装更新的工具。它需要指定在https://www.drupal.org/docs/system-requirements/composer-requirements中指定的最低版本的Composer。

Drush

脚本会期望在代码库的vendor/bin中找到drush二进制文件。如果没有找到,则将跳过该站点并生成错误通知。如果您在composer文件中指定了drush在require-dev下,则运行此脚本的系统需要安装所有站点并带有开发依赖项。

此要求还自动防止它在典型的Drupal 7站点安装上工作。

用法

您可以通过调用drupalup/direct/path/to/drupalup来运行脚本,具体取决于它是否在您的路径中。

运行drupalup list以查看所有命令,或运行drupalup help以获取详细的用法说明。

此项目使用Symfony控制台组件,它提供了以下默认命令和选项

选项描述
-h--help显示给定命令的帮助。如果没有给定命令,显示更新命令的帮助。
-q--quiet不输出任何消息。如果使用此选项,还应使用--no-interaction
-V--version显示此应用程序的版本。
--ansi--no-ansi强制(或禁用--no-ansi)ANSI输出。
-n--no-interaction不提出任何交互式问题。
-v-vv-vvv--verbose增加消息的详细程度:1为正常输出,2为更详细的输出,3为调试。

注意:所有命令都有一个共同的--debug选项,该选项将额外的数据写入日志文件以用于故障排除。使用级别3的详细程度也会启用调试,但使用调试不会增加详细程度。

运行Drupal更新

命令:drupalupdrupalup update

在drupalup.sites.yml文件中的所有站点上运行Drupal更新。这是默认命令,在调用脚本时不需要提供参数。这是默认命令。

选项

  • <uri> - 可选。指定要更新的单个站点。必须与drupalup.sites.yml文件中的URI匹配。如果省略,则将更新所有站点。
  • --select, -s - 可选。列出所有可用的站点,允许用户选择一个要更新的站点。仅当未提供<uri>时才有效,否则将被忽略。
  • --notify, -N - 可选。在完成后发送电子邮件通知。仅在always_notify配置设置为false或省略时才需要。
  • --dry-run, -d - 执行干运行,即运行所有更新,发送通知(如果已启用),但在干运行模式下执行git提交和推送并记录结果。
  • --skip-db-sync - 跳过从生产环境中同步数据库。如果在第一次运行更新时数据库已同步,则这很有用。

回滚更新

命令:drupalup rollback

回滚单个站点的更新。这将将站点重置为主分支,从备份中恢复数据库,然后运行composer install以将composer库恢复到之前的状态。

此命令的目的是在将更新部署到生产之前测试部署更新。它不会执行任何git操作或发送任何电子邮件通知。它仅当站点已被update命令更新时才有效。

选项

  • <uri> - 可选。必须匹配 drupalup.sites.yml 文件中的一个 URI。如果没有提供,将为用户列出所有可用的站点,以便选择要回滚的站点。

如果源代码不在更新或主分支上,或者找不到数据库备份文件,回滚过程将失败。

显示日志条目

命令: drupalup log

以表格形式显示上次运行命令的日志条目(如果有的话)。如果在命令运行期间记录了任何内容,它将在完成时通知您。