drupal / drupal_automatic_updater
更新Drupal核心和贡献模块。仅兼容Drupal 8及以上版本。
Requires
- php: >=8.2
- league/commonmark: ^2.4
- symfony/console: ^6.3
- symfony/mailer: ^6.3
- symfony/process: ^6.3
- symfony/validator: ^6.3
- symfony/yaml: ^6.3
This package is not auto-updated.
Last update: 2024-09-16 08:16:44 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更新
命令:drupalup
或drupalup 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
以表格形式显示上次运行命令的日志条目(如果有的话)。如果在命令运行期间记录了任何内容,它将在完成时通知您。