Chapter 02

CI/CDを設定

たつきち
たつきち
2022.07.30に更新

この章に対応するコミット

デモアプリはHerokuにデプロイしているため、コミットの内容は本文の解説と若干異なります。

CI/CDを設定

この時点で、とりあえずCI/CDを設定してしまいます。

僕は普段 CircleCI を使っているので、CircleCIと Deployer の設定をして、CI/CDを回し始めます。

具体的な設定方法などは以下の過去記事をご参照ください。

[保存版] CircleCI 2.0による自動デプロイの導入手順まとめ

なお、Symfonyプロジェクトの場合は、Deployerの設定ファイルは以下のように recipe/symfony4.php を使うことで簡略化できます。

<?php
namespace Deployer;

require 'recipe/symfony4.php';

set('repository', 'ssh://git@github.com/xxx/xxx');
set('git_tty', true); // [Optional] Allocate tty for git clone. Default value is false.
set('shared_files', ['.env.local']);
set('shared_dirs', []);
set('writable_dirs', ['var']); // Writable dirs by web server
set('default_stage', 'staging');

host('prod')
    ->hostname('xxx.com')
    ->port(xxx)
    ->user('xxx')
    ->addSshOption('StrictHostKeyChecking', 'no')
    ->set('branch', 'release')
    ->set('deploy_path', '/var/www/html/xxx.com')
;

host('staging')
    ->hostname('staging.xxx.com')
    ->port(xxx)
    ->user('xxx')
    ->addSshOption('StrictHostKeyChecking', 'no')
    ->set('branch', 'main')
    ->set('deploy_path', '/var/www/html/staging.xxx.com')
    ->set('composer_options', '{{composer_action}} --verbose --prefer-dist --no-progress --no-interaction --optimize-autoloader') // @see https://blog.ttskch.com/php-deployer-staging-composer-install-without-no-dev/
;

after('deploy:failed', 'deploy:unlock');

CI/CDの設定はプロジェクトの最初にやるようにしましょう

よくCI/CDの設定を後回しにしてとりあえずローカルで開発だけ始めてしまう人がいますが、個人的にはCI/CDの設定は開発の一番初めにやってしまったほうがいいと思います💪

ローカルで全テスト実行は時間がかかるのでGitHubにpushするたびに勝手にテストしてくれるようになっているほうが何も考えなくてもすぐにバグに気づけて楽ですし、この時点からステージング環境を用意して頻繁に(自動で)デプロイするようにしておけばお客さんとのやりとりもスムーズです👍