deployer との付き合い方

deployer を使ってみて、その付き合い方はこうだろうというところをまとめてみる

  • インストールして動かしてみる
  • 自分が使ってる環境にあった recipe がすでにあるかどうか確認する
  • そのまま使えるのであれば使う
  • 大抵はそのまま使えないので before / after などで差し込めるか検討してやってみる
  • 大抵はそれでもダメなのでやりたいことに似ている recipe をコピペして task('deploy', ...) を組み直してフローを整備してから各種タスクを実装していく
    • 大抵は runLocally などでごにょってから rsync などすることになる

runLocally してからの rsync の例:

// deploy assets to remote
// localpath => remotepath in array
set('asset_collection', [
    'public/build' => "{{release_path}}/public/build",
    'public/images' => "{{release_path}}/public/images",
    'public/js' => "{{release_path}}/public/js",
]);
task('deploy:assets', function () {
    $server = \Deployer\Task\Context::get()->getServer()->getConfiguration();
    $host = $server->getHost();
    $port = $server->getPort();
    $privateKey = $server->getPrivateKey();
    $user = $server->getUser();

    // rsync to server
    $assets = get('asset_collection');
    foreach ($assets as $from=>$to) {
        runLocally(
            "rsync -e \"ssh -p $port -i $privateKey\" -avz --delete \"$from/\" \"$user@$host:$to\""
        );
    }
})->desc('Deploy assets to remote server');

といった具合である。この例の場合, 'deploy' タスクに 'deploy:asset' を追加すればよい。

Share this post:

Comments