deployerでSymfony flexなプロジェクトをdeployする

January 22, 2018,
tags: symfony deployer


このエントリーをはてなブックマークに追加

Symfony3の場合は、deployerのrecipeにsymfony3.phpがあるので問題ない。
Symfony Flexでも基本的にSymfony3のrecipeベースで問題ない。 しかし、自分でいくつか設定を変更する必要がある。

deploy.phpを書いてみた

Symfony4用にdeploy.phpを書いてみた。

deploy.php

<?php
namespace Deployer;

require 'recipe/symfony3.php';

// Project name
set('application', 'sf4-todo');

// Project repository
set('repository', 'git@github.com:polidog/sf4-todo.git');

// [Optional] Allocate tty for git clone. Default value is false.
set('git_tty', true); 

// Shared files/dirs between deploys 
set('shared_files', []);


set('assets', ['public/pub', 'public/images', 'public/js']);


// Hosts
host('your server')
    ->stage('dev')
    ->user("deploy")
    ->set('symfony_env', 'prod')
    ->set('composer_options', 'install --verbose --prefer-dist --optimize-autoloader --no-progress --no-interaction --no-scripts')
    ->set('deploy_path', '/var/www/sf4-todo');
    
// Tasks

task('build', function () {
    run('cd {{release_path}} && build');
});

task('deploy:assets:install', function () {
    run('{{bin/php}} {{bin/console}} assets:install {{console_options}} {{release_path}}/public');
})->desc('Install bundle assets');

// [Optional] if deploy fails automatically unlock.
after('deploy:failed', 'deploy:unlock');

// Migrate database before symlink new release.

before('deploy:symlink', 'database:migrate');

基本的にはSymfony3のレシピを使用すれば良いけど、2点ほど変更する箇所が必要。

  1. app/config/parameters.ymlがなくなった
  2. assets:installの設定の変更

app/config/parameters.ymlがなくなった

symfony.phpのレシピを見ればわかるがshared_filesでapp/config/parameters.ymlが設定されている。 symfony4では必要ないため以下のように書く。

set('shared_files', []);

assets:installの設定の変更

公開ディレクトリがwebからpublicに変更になったので設定を変更する。 設定を変更するのは2箇所。

  • assets:installじのディレクトリ指定
  • assetsのディレクトリの変更

assets:installじのディレクトリ指定

task('deploy:assets:install', function () {
    run('{{bin/php}} {{bin/console}} assets:install {{console_options}} {{release_path}}/public');
})->desc('Install bundle assets');

assetsのディレクトリの変更

set('assets', ['public/css', 'public/images', 'public/js']);

最後に

この記事書いてから気づいたんだけど、Symfony flex supportのPull Requestが出ているので早くマージされることを祈る。

Symfony flex support #1440

comments powered by Disqus