sourcebroker/deployer-extended-typo3

TYPO3 的部署工具。

21.0.0 2023-10-01 12:01 UTC

README

http://img.shields.io/packagist/v/sourcebroker/deployer-extended-typo3.svg?style=flat https://img.shields.io/badge/license-MIT-blue.svg?style=flat

它做什么?

此软件包为使用 deployer (deployer.org) 部署 TYPO3 CMS 提供部署任务。

此 "deploy" 任务依赖于

此外,此软件包还依赖于两个其他软件包,这些软件包不直接用于部署,但对于数据库和媒体同步很有用

安装

  1. 使用 composer 安装软件包

    composer require sourcebroker/deployer-extended-typo3
    

    建议您在 ~/.profile 中添加 alias dep="vendor/bin/dep",以便能够通过常规 dep 命令运行 deployer。否则,您需要像这样运行 deployer:./vendor/bin/dep ...

  2. 将以下行放在您的 deploy.php 的开头

    require_once(__DIR__ . '/vendor/sourcebroker/deployer-loader/autoload.php');
    new \SourceBroker\DeployerExtendedTypo3\Loader();
    
  3. 请从您的 deploy.php 中删除 "deploy" 任务。否则,您将覆盖在 vendor/sourcebroker/deployer-extended-typo3/deployer/default/deploy/task/deploy.php 中定义的部署任务。请参阅 工作配置示例,了解 deploy.php 文件可以多么简单。

  4. 在每个实例中创建 .env 文件,该文件应位于 git 之外,并至少包含 INSTANCE,其名称与在 deploy.php 文件中为 host() 定义的同名。您也可以使用此文件存储数据库凭据和所有其他针对每个实例而不同的设置。因为 deployer-extended-typo3 使用 helhum/dotenv-connector,所以 .env 文件中的值将在 TYPO3 中可用,您可以在 typo3onf/AdditionalConfiguration.php 中使用它们来设置数据库连接。这样,您可以将 typo3onf/LocalConfiguration.php 放入 git。以下是 .env 文件的示例

    TYPO3_CONTEXT='Production//Live'
    INSTANCE='live'
    
    TYPO3__DB__Connections__Default__dbname='t3base11_live'
    TYPO3__DB__Connections__Default__host='127.0.0.1'
    TYPO3__DB__Connections__Default__password='password'
    TYPO3__DB__Connections__Default__port='3306'
    TYPO3__DB__Connections__Default__user='t3base11_live'
    

    如果您想在每个部署时更新语言文件,请在 deploy_symlink 之前添加任务 typo3cms:language:update。请参阅 #14 了解为什么在每个部署时更新语言标签很有争议,并且通常不建议这样做。

    before('deploy_symlink', 'typo3cms:language:update');
    

    如果您想让 Deployer 直接从 TYPO3 获取数据库数据而不是从 .env 文件中读取,则设置

    set('driver_typo3cms', true);
    

部署

运行

dep deploy [host]

共享目录

对于 TYPO3 11,共享目录是

set('shared_dirs', function () {
    return [
        get('web_path') . 'fileadmin',
        get('web_path') . 'uploads',
        get('web_path') . 'typo3temp/assets/_processed_',
        get('web_path') . 'typo3temp/assets/images',
        !empty(get('web_path')) ? 'var/log' : 'typo3temp/var/log',
        !empty(get('web_path')) ? 'var/transient' : 'typo3temp/var/transient',
    ];
});

共享文件

TYPO3 11 的共享文件是

set('shared_files', ['.env']);

Composer

您可以使用 composer_channel(值:1、2、stable、prelive、snapshot)或使用 composer_version(它接受精确的标签作为参数,例如 https://github.com/composer/composer/tags)来设置正确的 composer 版本。为了稳定性和安全性,建议您将 composer_channel 设置为值 12,这样它将自动更新,但不会在将来安装任何新的大版本,因此您的部署将保持相对稳定。默认值为 2

set('composer_channel', 2);

同步数据库

数据库同步使用 sourcebroker/deployer-extended-database 完成。

从实时数据库同步到本地实例的命令是

dep db:pull live

如果您已登录到beta实例的ssh,您还可以运行 dep media:pull live 以从 live 获取数据库到 beta。但您也可以使用以下命令从您本地实例同步 livebeta

dep db:copy live --options=target:beta

同步媒体

媒体同步使用 sourcebroker/deployer-extended-media 完成。同步的文件夹是 fileadmin(除 fileadmin/_proccessed_ 外)和 uploads

从实时到本地实例同步媒体的命令

dep media:pull live

如果您已登录到beta实例的ssh,您还可以运行 dep media:pull live 以从 live 获取媒体到 beta。但您也可以使用以下命令从您本地实例同步 livebeta

dep media:copy live --options=target:beta

如果实例位于同一主机上,您可以为每个文件使用符号链接(相当于 cp -rs source destination)。这样,您可以在预发布实例上节省媒体空间,同时不会意外删除它们!

dep media:link live --options=target:beta

工作配置示例

这是TYPO3 11的工作配置示例。sourcebroker/deployer-extended-typo3 的目的是拥有一个非常瘦的 deploy.php 文件,以便有很好的机会升级到 sourcebroker/deployer-extended-typo3 的未来版本。

<?php

namespace Deployer;

require_once(__DIR__ . '/vendor/sourcebroker/deployer-loader/autoload.php');
new \SourceBroker\DeployerExtendedTypo3\Loader();

set('repository', 'git@github.com:sourcebrokergit/t3base11.git');

host('live')
    ->setHostname('vm-dev.example.com')
    ->setRemoteUser('deploy')
    ->set('branch', 'master')
    ->set('bin/php', '/home/www/t3base11-public/live/.bin/php');
    ->set('public_urls', ['https://live-t3base11.example.com'])
    ->set('deploy_path', '/home/www/t3base11/live');

host('beta')
    ->setHostname('vm-dev.example.com')
    ->setRemoteUser('deploy')
    ->set('branch', 'master')
    ->set('bin/php', '/home/www/t3base11-public/beta/.bin/php');
    ->set('public_urls', ['https://beta-t3base11.example.com'])
    ->set('deploy_path', '/home/www/t3base11/beta');

host('local')
    ->set('deploy_path', getcwd());

变更日志

请参阅 https://github.com/sourcebroker/deployer-extended-typo3/blob/master/CHANGELOG.rst