avris / deployer
v1.0
2024-07-04 20:31 UTC
Requires
- php: ^8.0
- symfony/console: ^7.1
- symfony/filesystem: ^7.1
- symfony/process: ^7.1
Requires (Dev)
- symfony/var-dumper: ^7.1
README
简单的部署助手。此脚本
- 克隆给定的存储库和分支到一个新目录(即不干扰处理过程中的实时进程)
- 创建部署间共享文件的符号链接(例如日志目录或
.env
) - 执行部署命令(默认为
make deploy
) - 清理完成部署后不再需要的文件(例如
.git
,node_modules
) - 清理旧版本(默认保留最新的3个)
- 将最新版本符号链接为
current
目录 - (可选)在部署的特定阶段运行额外命令。
安装
composer global require avris/deployer
为了执行全局安装的composer二进制文件,将以下内容添加到您的~/.bashrc
/ ~/.zshrc
export PATH="$(composer config -g home)/vendor/bin:$PATH"
用法
创建一个部署文件夹,并在其中初始化Deployer
mdkir project_name
cd project_name
deployer init <repo_url>
此命令将创建一个shared
目录。将所有应该在部署间共享的文件放在那里。
它还将创建deploy.php
文件。此文件包含部署的所有配置,其外观如下所示
<?php
return new class extends \Avris\Deployer\Config
{
public function repositoryUrl(): string
{
return 'git@gitlab.com:Avris/OurSong.git';
}
public function sharedFiles(): iterable
{
yield '.env';
yield 'keys';
yield 'server/.env.local';
yield 'server/var/geo.json';
yield 'server/var/log';
}
public function finish(): iterable
{
yield ['sudo', 'service', 'php8.3-fpm', 'restart'];
}
};
默认情况下,将要执行的构建发布版本的命令是make deploy
。要使其生效,在项目的存储库中创建一个Makefile
,例如。
deploy:
composer install --no-dev --optimize-autoloader
bin/console doctrine:migration:migrate -n
yarn
yarn build
可以在配置文件中指定的方法
repositoryUrl
(必需)branch
(默认为main
)keepReleases
(默认为3
)- 应在release
文件夹中保留多少个目录(允许快速回滚到以前的版本)sharedFiles
- 文件或目录(相对路径)列表,应在发布间共享(通过从shared
符号链接到每个发布)removeFiles
- 文件或目录(相对路径)列表,在构建步骤完成后应删除build
(默认为[make deploy]
)- 构建项目(编译等)的命令列表- 钩子 - 在各个阶段执行的命令列表
before
- 在部署开始时运行after
- 在build
之后立即运行beforeRemove
- 在清理旧版本之前立即运行(在版本的工作目录中)finish
- 在部署结束时运行beforeSwitchVersion
- 在切换到不同版本之前立即运行afterSwitchVersion
- 在切换到不同版本之后立即运行reload
- 在两次部署和切换的最后运行(例如,用于重新加载Apache)
现在您可以执行部署了:只需运行deployer
(或deployer <branch>
,如果您想覆盖默认分支)。
要切换版本,请运行deployer version list|prev|next
。
版权
- 作者: Andrea Vos (avris.it)
- 许可: OQL