onedesign / atomic-deploy
一个用于在Linux环境中轻松处理原子部署的脚本。
1.2.0
2021-12-03 21:38 UTC
This package is auto-updated.
Last update: 2024-09-07 06:44:36 UTC
README
此项目基于在Buddy Atomic Deployments中提出的概念。它提供了处理部署之间共享文件和目录的功能。虽然这是为Buddy编写的,但它可以在任何标准的*nix环境中工作。
依赖项
- PHP 5.5+
- curl
文件结构
deploy-cache/
- 所有文件上传到服务器的位置revisions/
- 包含所有修订版的目录current
- 指向当前修订版的符号链接shared/
- 包含应跨所有部署共享的文件的目录
用法
curl -sS https://raw.githubusercontent.com/onedesign/atomic-deployments/master/atomic-deploy.php | php -- --revision=$(date "+%F-%H-%M-%S")
Buddy + Craft 2 示例
在您的流水线中文件上传操作之后,在“SSH命令”部分添加以下内容
curl -sS https://raw.githubusercontent.com/onedesign/atomic-deployments/master/atomic-deploy.php | php -- --revision=${execution.to_revision.revision} --symlinks='{"shared/config/.env.php":".env.php","shared/storage":"craft/storage"}'
选项
--revision
(必需) 接受此修订版的字符串ID--deploy-dir
接受部署的基础目录(默认:当前工作目录)--deploy-cache-dir
接受目标缓存目录(默认:deploy-dir中的deploy-cache
)--revisions-to-keep
保留的旧修订版数量(默认:20
)--symlinks
要在修订版目录中创建的符号链接的JSON散列(默认:{}
)--help
打印帮助和用法说明--ansi
强制ANSI颜色输出--no-ansi
禁用ANSI颜色输出--quiet
抑制不重要信息--protect
保护来自*.oneis.us域名的网站(默认:true
)
符号链接
符号链接指定为{"target":"linkname"}
,并使用本机ln
工具创建链接。
target
相对于--deploy-dir
路径linkname
相对于修订版路径
例如,指定此选项
--symlinks='{"shared/config/.env.php":".env.php","shared/logs":"logs"}'
将创建与以下相同的符号链接
ln -s <deploy-dir>/shared/config/.env.php revisions/<revision>/.env.php
ln -s <deploy-dir>/shared/logs revisions/<revision>/logs
注意:在创建符号链接的地方存在的文件和目录将被覆盖。例如,使用上面的示例,实际上发生的是这种情况
rm -rf revisions/<revision_id>/.env.php \
&& ln -sfn <deploy-dir>/shared/config/.env.php revisions/<revision>/.env.php
rm -rf revisions/<revision_id>/logs \
&& ln -sfn <deploy-dir>/shared/logs revisions/<revision>/logs
密码保护
默认情况下,部署将保护任何来自*.oneis.us域名的网站。这是通过将templates/htaccess-auth.txt
文件的内容添加到在current/web
目录中找到的任何现有的.htaccess
文件来实现的。如果在那个目录中没有找到.htaccess
文件,将使用templates/htaccess.txt
文件生成一个。
测试
cd ./test php ../bin/deploy \ --deploy-cache-dir="./deploy-cache" \ --revision="123456" \ --symlinks='{"shared/config/env":".env","shared/storage":"storage"}'