sle / phing-typo3-deployer
Phing TYPO3 Deployer 是一个强大的 TYPO3 CMS 部署工具
Requires
- php: >=7.1
- composer/composer: ^1.1 || ^2.0
- phing/phing: ^2.16
- symfony/filesystem: ^3.2
This package is auto-updated.
Last update: 2024-09-23 19:03:46 UTC
README
内容
简介
本包的目标是什么?
Phing Typo3 Deployer 基于 Build 工具 Phing,用于自动化发布,即持续集成和持续部署,TYPO3 CMS 实例。
先决条件
- PHP 7
- TYPO3 CMS 7 || 8 在 Composer 模式下
- 命令行
- Unix 或 Linux
- 以必要的 Web 用户(通常是 www-data)的权限执行
项目结构
此工具需要和生成以下目录结构和文件
bin/ releases/ current/ previous/ next/ rsync/ -> Wird nur generiert, wenn 'install-rsync-excludes' aktiviert ist. excludes.txt shared/ typo3/ composer.json vendor/ build.custom.properties build.env.properties build.hook.xml build.xml composer.json composer.lock
设置新项目
设置仅需以下三个步骤
-
在项目的 Webroot(htdocs 目录)中创建
composer.json
{ "name": "my/typo3-project", "license": "MIT", "description": "", "type": "project", "require": { "sle/phing-typo3-deployer": "[VERSION]" }, "config": { "vendor-dir": "vendor", "bin-dir": "bin" }, "minimum-stability": "stable", "scripts": { "post-install-cmd": [ "Sle\\PhingTypo3Deployer\\Composer\\Scripts::postInstall" ], "post-update-cmd": [ "Sle\\PhingTypo3Deployer\\Composer\\Scripts::postUpdate" ] }, "extra": { "sle/phing-typo3-deployer": { "install-rsync-excludes": false } } }
-
安装 Composer 包
$ composer install
安装时将生成以下项目结构
bin/ vendor/ typo3/ composer.json build.custom.properties build.env.properties build.hook.xml build.xml composer.json composer.lock
-
将文件添加到版本控制
必须添加以下文件到版本控制
rsync/ excludes.txt typo3/ composer.json build.custom.properties build.hook.xml composer.json composer.lock
使用 git 添加
$ git add -A && git commit -m '[Build] Add phing-typo3-deployer'
在目标系统上设置项目
在这里,“目标系统”指的是一个 Web 服务器或其他类似设备。
为了在目标系统上正确设置,需要以下步骤
-
将项目文件复制到目标系统
必须将位于版本控制中的项目文件和目录复制到目标系统。目录结构现在如下所示
typo3/ .env.dist composer.json composer.lock build.custom.properties build.hook.xml composer.json composer.lock
-
安装 Composer 包
$ composer install
-
在某些 vServer(例如 Mittwald vServer)上,Phing 可能无法正确读取绝对路径。此外,PHP 在命令行中以
php_cli
而不是php
被调用。因此,可以在现在创建的build.env.properties
中重新配置环境变量。-
例如,Mittwald vServer 环境配置
# Base directory configuration base.dir = /home/www/p<XXXXXX>/html/<project-dir> # Commandline configuration cmd.php = php_cli cmd.composer = composer
-
-
发布初始版本
当前版本的目录位于
releases/current/
。要创建它,必须执行以下命令$ bin/phing ci:release
另请参阅 如何创建新版本?
注意!
在 Mittwald vServer 上执行时,可能会出现 Phing 找不到
build.xml
的情况。为此,应安装替代的phing.phar
(请参阅 https://www.phing.info/)。理想情况下,phing.phar
应包含在项目存储库的根目录中,并且也应将其部署。$ php_cli phing.phar ci:release
在此过程中,将创建以下文件和目录
releases/ current/ bin/ vendor/ web/ previous/ -> Wird ab dem zweiten Release generiert und beinhaltet immer das vorherige Release. bin/ vendor/ web/ build.env.properties
将
typo3
目录中的数据复制到releases/current/
目录,并执行composer install
。 -
配置 vHost
虚拟主机必须指向目录
<project-root>/releases/current/web
。 -
在目标系统上安装TYPO3 CMS
现在必须在目标系统上初始化安装TYPO3 CMS。这可以通过TYPO3安装向导或typo3console完成。
使用typo3console安装
releases/current$ bin/typo3cms install:setup
-
公共文件集中存储
公共文件(shared data)现在需要集中存储,以便为未来的发布版本可用。
$ bin/phing init:shared
在此过程中,将
LocalConfiguration.php
以及fileadmin
和uploads
目录复制到shared
目录,因为这些目录始终保持不变,因此对于未来的发布版本可以在中央提供。此外,还将原始文件通过符号链接替换。为
shared
生成的目录结构releases/ current/ shared/ .env (Wenn typo3/.env.dist vorhanden ist) fileadmin/ uploads/ typo3conf/ LocalConfiguration.php
为自动化发布设置
可以通过Git和Jenkins自动更新项目。在同步时,必须更新以下文件
typo3/ build.custom.properties build.hook.xml composer.json composer.lock
钩子
所有可用的钩子都位于文件build.hook.xml
中。
属性
全局属性
可用属性的列表位于文件src/phing/config/build.properties
中。
自定义属性
可以在文件build.custom.properties
中设置自定义属性,并在钩子中提供。
环境属性
可以在文件build.env.properties
中设置环境配置。
常见问题解答
列出所有可用命令
$ bin/phing
本地开发
本地开发在目录htdocs/typo3中进行。安装后的完整目录结构如下
bin/ typo3/ vendor/ web/ composer.json composer.lock vendor/ build.custom.properties build.env.properties build.hook.xml build.xml composer.json composer.lock
虚拟主机应指向typo3/web
。
如何创建新版本?
$ bin/phing ci:release
作为备选方案,可以创建并发布3个专用的目标。可以在目标之间执行自己的服务器脚本,例如调整权限。(这三个目标也将按照顺序由ci:release
执行)
$ bin/phing ci:release:create:next $ bin/phing ci:release:publish:next $ bin/phing ci:release:post-actions
Jenkins 项目配置
-
必须同步以下文件
typo3/ build.custom.properties build.hook.xml composer.json composer.lock
-
使用远程shell创建新版本
$ ssh <user>@<server> <server>$ cd <webroot>/<project> <server>/<webroot>/<project>$ composer install <server>/<webroot>/<project>$ bin/phing ci:release
另请参阅 如何创建新版本?
RSYNC
安装excludes.txt
可以通过以下Composer配置自动安装excludes.txt
"extra": { "sle/phing-typo3-deployer": { "install-rsync-excludes": true } }
配置
rsync --delete -aze ssh --iconv=UTF-8 --exclude-from $WORKSPACE/rsync/excludes.txt $WORKSPACE/ <user>@<server>:/<webroot>/<project>/
可以在文件rsync/excludes.txt
中配置RSYNC-Excludes。
rsync releases shared build.env.properties build.xml
版本控制
以下文件和目录不应纳入版本控制
build.env.properties build.xml bin shared vendor releases
迁移
从 1.x 版本升级到 2.x 版本
从版本2开始,必须通过build.custom.properties
配置TYPO3 Web目录的路径,如下所示
# TYPO3 CMS web-dir
#
# This should be the same value as in composer.json 'web-dir'
#
# Example:
# ========
# "extra": {
# "typo3/cms": {
# "cms-package-dir": "{$vendor-dir}/typo3/cms",
# "web-dir": "web"
# },
# }
typo3-cms.web-dir = web