Semaphoreciを使用して継続的な配信と展開者に使用して、コードをDigitalOcean生産サーバーにプッシュします。 Deployerに慣れていない場合は、この紹介をチェックすることをお勧めします。
市場からの写真をロードする500pxアプリケーションを使用します。 Laravelを使用して構築されたので、ここで建築プロセスに関する記事全文を読んで、GitHubでレポを見つけることができます。
デプロイヤースクリプトの作成
展開者の動作方法は、サーバーを定義し、それらのサーバーにアプリケーションを展開するプロセスを処理するタスクを作成することです。 deploy.phpスクリプトは次のようになります
この特定のスクリプトが何をしているのかについて詳しく知りたい場合は、 Deployerの記事を読む必要があります。次のステップは、Semaphoreciプロジェクトを設定することです。 Semaphoreciを試したことがない場合は、クラッシュコースの記事を読んでください。
展開のセットアップ
自動展開を選択した後、Semaphoreciは展開コマンドを指定する機能を提供します。マニュアルと自動の違いは、成功したテストのたびに自動展開がトリガーされ、マニュアルにより成功したコミットを展開できることです。
注:Semaphoreciは、展開プロセス専用の新しいSSHキーを作成することをお勧めします。誰かが私たちの鍵などを盗んだ場合、簡単に取り消すことができます。キーは、最後に保存する前に暗号化されます。
キーは〜/.ssh/id_rsaで利用可能であるため、default。
すべてがセットアップされたので、統合と展開プロセスをトリガーするためにリポジトリにいくつかの変更をコミットする必要があります。
<span><span><?php </span></span><span> </span><span><span>require_once "recipe/common.php"; </span></span><span> </span><span><span>set('ssh_type', 'native'); </span></span><span><span>set('default_stage', 'staging'); </span></span><span><span>env('deploy_path', '/var/www'); </span></span><span><span>env('composer_options', 'install --no-dev --prefer-dist --optimize-autoloader --no-progress --no-interaction'); </span></span><span><span>set('copy_dirs', [ </span></span><span> <span>'app/commands', </span></span><span> <span>'app/config', </span></span><span> <span>'app/controllers', </span></span><span> <span>'app/database', </span></span><span> <span>'app/lang', </span></span><span> <span>'app/models', </span></span><span> <span>'app/src', </span></span><span> <span>'app/start', </span></span><span> <span>'app/tests', </span></span><span> <span>'app/views', </span></span><span> <span>'app/filters.php', </span></span><span> <span>'app/routes.php', </span></span><span> <span>'bootstrap', </span></span><span> <span>'public', </span></span><span> <span>'composer.json', </span></span><span> <span>'composer.lock', </span></span><span> <span>'artisan', </span></span><span> <span>'.env', </span></span><span><span>]); </span></span><span> </span><span><span>set('shared_dirs', [ </span></span><span> <span>'app/storage/cache', </span></span><span> <span>'app/storage/logs', </span></span><span> <span>'app/storage/meta', </span></span><span> <span>'app/storage/sessions', </span></span><span> <span>'app/storage/views', </span></span><span><span>]); </span></span><span><span>set('writable_dirs', get('shared_dirs')); </span></span><span><span>set('http_user', 'www-data'); </span></span><span> </span><span><span>server('digitalocean', '174.138.78.215') </span></span><span> <span>->identityFile() </span></span><span> <span>->user('root') </span></span><span> <span>->stage('staging'); </span></span><span> </span><span><span>task('deploy:upload', function() { </span></span><span> <span>$files = get('copy_dirs'); </span></span><span> <span>$releasePath = env('release_path'); </span></span><span> </span><span> <span>foreach ($files as $file) </span></span><span> <span>{ </span></span><span> <span>upload($file, "<span><span>{$releasePath}</span>/<span>{$file}</span>"</span>); </span></span><span> <span>} </span></span><span><span>}); </span></span><span> </span><span><span>task('deploy:staging', [ </span></span><span> <span>'deploy:prepare', </span></span><span> <span>'deploy:release', </span></span><span> <span>'deploy:upload', </span></span><span> <span>'deploy:shared', </span></span><span> <span>'deploy:writable', </span></span><span> <span>'deploy:symlink', </span></span><span> <span>'deploy:vendors', </span></span><span> <span>'current',// print current release number </span></span><span><span>])->desc('Deploy application to staging.'); </span></span><span> </span><span><span>after('deploy:staging', 'success'); </span></span>
上記のスクリーンショットは、McRyptの拡張機能が有効になっていないため、PHPの職人がクリアコンパイルされたコマンドがエラーを返しているため、失敗したコミットです。
注:Semaphoreciが提供するもう1つのきちんとしたトリックは、ビルドサーバーにsshingして、何がうまくいかなかったかを確認することです。
その他の展開ツール
deploymentコマンドステップでは、特使をインストールして実行します。
それだけです!特使は、追加したキーを使用して認証し、指定したアップデートコマンドを実行します。
結論
CI/CD用のLaravelの構成には、テスト環境のセットアップ、アプリケーションのテストの作成、ビルドプロセスの設定、展開プロセスの設定が含まれます。 Phpunitを使用して、依存関係を管理するための作曲家、Laravel EnvoyやDeployerなどのツールを展開タスクを自動化できます。また、SemaphoreciやGitLab CI/CDなどのCI/CDプラットフォームを選択し、テストを実行し、アプリケーションを構築し、アプリケーションを展開するように構成する必要があります。CI/CDおよびEnvoyを使用してLaravelアプリケーションを展開するには、展開段階を含むCI/CDパイプラインのセットアップが含まれます。この段階では、Envoyを使用して展開タスクを自動化できます。 Project Root DirectoryにEnvoy.blade.phpファイルを作成し、このファイルにタスクを定義するだけです。次に、CI/CDパイプラインにコマンドを追加して、Envoyタスクを実行できます。コマンドは次のようになります:PHPベンダー/ビン/エンボイランデプロイ。
以上がSemaphoreciでLaravel EnvoyまたはDeplayerを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。