xima / xima-deployer-extended-typo3
TYPO3项目常用的部署配置
v1.6.2
2024-09-18 11:32 UTC
Requires
README
此包扩展了deployer-extended-typo3以实现一些常用配置。
亮点
- 典型服务器环境的默认值
- 功能分支部署,新增
base_branch
选项 - 非git部署
安装
composer require xima/xima-deployer-extended-typo3
配置
deploy.php
<?php namespace Deployer; require_once(__DIR__ . '/vendor/xima/xima-deployer-extended-typo3/autoload.php'); set('repository', 'git@github.com:your-repo-name.git'); function defineTestHost($branchName, $stage) { host('example-' . strtolower($branchName)) ->setHostname('192.168.0.1') ->setRemoteUser('username') ->set('labels', ['stage' => $stage]) ->set('branch', $branchName) ->set('public_urls', ['https://' . strtolower($branchName) . '.example.com']) ->set('deploy_path', '/var/www/html/example_' . strtolower($branchName)); } // feature branch hosts for ($i = 1; $i <= 999; $i++) { $branchName = 'TICKET-' . $i; defineTestHost($branchName, 'feature'); } // main host defineTestHost('master', 'live');
功能分支部署
有一个新命令db:init
,它在db:truncate
之前运行。此命令检查base_branch选项
vendor/bin/dep deploy-fast example-ticket-001 --options=base_branch:master
如果设置了此选项,则命令会检查当前功能主机是否已初始化。如果是空数据库,则触发db:copy
命令从给定的base_branch获取数据库副本。
默认值
配置涵盖了典型的权限、共享和可写目录设置。有关默认值,请参阅set.php。
要扩展默认值数组,请使用以下set
命令
set('shared_dirs', [ ...get('shared_dirs'), 'newDir', ]);
新命令
- dep launch
- dep log:app
- dep log:phpfpm
- dep log:phpfpm-slow
- dep log:phpfpm-access
- dep log:phpfpm-error
- dep sequelace
非git部署
如果源主机无法访问git仓库,可以将deploy:update_code
替换为新任务deploy:upload_code
以传输所有必需的文件。
task('deploy:update_code')->disable();
after('deploy:update_code', 'deploy:upload_code');
要上传的文件通过upload_paths
进行配置。
从Gitlab工件重置
如果主机A需要从主机B获取当前数据而没有直接访问权限,可以使用Gitlab工件作为中介。
先决条件
- 具有下载访问权限的Gitlab API令牌
- 主机A的deploy.php中的工件下载URL
set('reset_gitlab_artifact_url', 'https://<domain>/api/v4/projects/<project-id>/jobs/artifacts/<branch>/download?job=export-job');
1. 主机B:导出数据库和媒体文件,然后作为工件上传。
export-job: ... script: - vendor/bin/dep db:export --options=dumpcode:myArtifact --no-interaction -vvv host-b - vendor/bin/dep db:process --options=dumpcode:myArtifact --no-interaction -vvv host-b - vendor/bin/dep db:compress --options=dumpcode:myArtifact --no-interaction -vvv host-b - vendor/bin/dep db:download --options=dumpcode:myArtifact --no-interaction -vvv host-b - vendor/bin/dep media:pull --no-interaction host-b artifacts: paths: - .dep/database - public/fileadmin - public/uploads expire_in: 1 day
2. 主机A:使用任务reset:from_gitlab_artifact下载和导入工件。
... import-job: ... script: - vendor/bin/dep reset:from_gitlab_artifact --options="token:$CI_VARIABLE_WITH_API_TOKEN,dumpcode:myArtifact" host-a when: manual