流水線 (Flow)
如果你的recipe是基于Deployer自帶的 common recipe 或框架recipe, 則使用的是一個(gè)默認(rèn)的流水線.
每個(gè)流水線是在 deploy 命名空間內(nèi)描述的一組其他任務(wù).一個(gè)常見的部署流程如下所示:
task('deploy', [
'deploy:prepare',
'deploy:lock',
'deploy:release',
'deploy:update_code',
'deploy:shared',
'deploy:writable',
'deploy:vendors',
'deploy:clear_paths',
'deploy:symlink',
'deploy:unlock',
'cleanup',
'success'
]);
框架recipes可能在流程上有所不同, 但基本結(jié)構(gòu)是相同的. 您可以通過重寫 deploy 任務(wù)來創(chuàng)建自己的流, 但更好的解決方案是使用緩存.
例如, 如果要在軟鏈接新版本之前運(yùn)行某些任務(wù):
before('deploy:symlink', 'deploy:build');
或者, 在成功部署后發(fā)送通知:
after('success', 'notify');
接下來快速了解一下每項(xiàng)任務(wù).
deploy:prepare
準(zhǔn)備部署. 檢查 deploy_path 是否存在, 否則創(chuàng)建它. 同時(shí)檢查是否存在以下路徑:
releases– 在這個(gè)目錄中, 將存儲(chǔ)版本.shared– 跨所有版本共享文件..dep– 部署程序使用的元數(shù)據(jù).
deploy:lock
部署鎖, 只能運(yùn)行一個(gè)并發(fā)部署. 此任務(wù)將檢查 .dep/deploy.lock 文件. 如果部署過程被Ctrl+C取消, 請運(yùn)行 dep deploy:unlock 刪除此文件. 如果部署失敗, 則 deploy:unlock 任務(wù)將自動(dòng)觸發(fā).
deploy:release
基于 release_name 配置參數(shù)創(chuàng)建新的發(fā)布文件夾. 同時(shí)讀取 .dep/releases 以獲取以前創(chuàng)建的版本列表.
此外, 如果在 deploy_path 中有早期版本的符號(hào)鏈接, 則會(huì)將其刪除.
deploy:update_code
使用Git下載新版本的代碼. 如果您使用的是Git 2.0版并且 git_cache 配置已打開, 則此任務(wù)將使用以前版本中的文件, 因此只下載更改的文件.
在 deploy.php 中重寫此任務(wù), 創(chuàng)建自己的代碼轉(zhuǎn)移策略:
task('deploy:update_code', function () {
upload('.', '{{release_path}}');
});
deploy:shared
從 shared 目錄創(chuàng)建共享文件和目錄到 release_path. 您可以在 shared_dirs 和 shared_files 配置參數(shù)中指定共享目錄和文件. 該過程分為以下步驟:
- 指定的目錄如果不存在將這些目錄從
release_path復(fù)制到shared中, - 從
release_path中刪除這些目錄, - 軟鏈接這些目錄從
shared到release_path.
共享文件也遵循同樣的步驟. 如果您的系統(tǒng)支持相對符號(hào)鏈接, 則將使用它們, 否則將使用絕對符號(hào)鏈接.
deploy:writable
設(shè)置 writable_dirs 參數(shù)中列出的目錄可寫. 默認(rèn)情況下, 使用 acl 模式(使用setfacl命令)此任務(wù)將嘗試猜測http_user用戶名, 或者可以自己配置它:
set('http_user', 'www-data');
// Or only for specified host:
host(...)
->set('http_user', 'www-data');
此任務(wù)還支持其他可寫模式:
- chown
- chgrp
- chmod
- acl
要使用其中一個(gè), 請?zhí)砑右韵聝?nèi)容:
set('writable_mode', 'chmod');
要將sudo與可寫設(shè)置一起使用, 請?zhí)砑右韵聝?nèi)容:
set('writable_use_sudo', true);
deploy:vendors
安裝 composer 依賴. 可以使用 composer_options 參數(shù)來配置composer選項(xiàng).
deploy:clear_paths
刪除 clear_paths 中指定的目錄. 可以使用 clear_use_sudo 參數(shù)與sudo一起運(yùn)行此任務(wù).
deploy:symlink
將 current 軟鏈接切換到 release_path. 如果目標(biāo)系統(tǒng)支持符號(hào)鏈接的原子切換, 它將被使用.
deploy:unlock
刪除.dep/deploy.lock 文件. 您可以直接運(yùn)行此任務(wù)來刪除鎖文件:
dep deploy:unlock staging
cleanup
根據(jù) keep_releases 選項(xiàng)來清理舊版本. -1 被視為不清理.
success
打印成功消息.