プルリクエストごとにサブドメインを自動的に作成する方法


9

バックグラウンド

私のバックエンドチームが作成したプルリクエスト(PR)ごとにiOS / Androidアプリでテストを行う必要がある非技術的なQAチームを獲得しました。

質問

これが私がやりたいことです。バックエンドエンジニアがbitbucketでPRを作成するたびに、作成したJIRAの問題と一致するPR gitブランチのコードを開発サーバーのサブドメインに自動的にデプロイするスクリプトが欲しいです。

たとえば、PRがBAC-421に対応するというjiraの問題を想定し、エンジニアがPRを作成するとすぐに、スクリプトが作成したコードをAWS EC2にデプロイし、QAがアプリをwww.bac421.mydevdomainにポイントできるようにします。 com

これを行う最良の方法は何ですか?私は専門の技術者です。

更新-環境仕様

ここに私たちの環境の分解があります-バックエンドはlaravel 5.3を使用します-それはAWS EC2にデプロイされます- 自動デプロイメントにforgeを使用します(空想的なものはありません。このスクリプトを実行するだけです:

cd /home/forge/default
git fetch --tags 
git pull origin master
git describe
composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader
echo "" | sudo -S service php7.1-fpm reload

if [ -f artisan ]
then
    php artisan migrate --force
    php artisan config:cache
    php artisan queue:restart
fi

devをmasterブランチにマージするとすぐに実行されます)-私は推奨事項を開いていますが、CI / CDツールを使用していません-DNSプロバイダーはGoDaddyです-アプリケーションサーバーはnginxです-データベースは個別のRDSインスタンス


1
現在、ソフトウェアをどのように展開していますか?どのCIまたはCDツールを使用していますか?あなたのDNSプロバイダーは誰ですか?
user2640621 2017年

はい。この猫のスキンを作成する方法はたくさんあります。hostsファイルの更新などが含まれますが、これらに限定されませんが、環境について詳しく知る必要があります。
James Shewey 2017年

回答が更新されました@ user2640621
abbood

回答:


3

私たちは仕事でこれを行います。

小さなサーバーがあり、それをレシーバーと呼びましょう。これはGitHub Webhookイベントのターゲットです。これは、ペイロードを解析し、インフラストラクチャプロバイダーでの新しいサーバーの作成、ロードバランサーの更新、既存のサーバーへのデプロイ、サーバーの破棄などの方法にロジックを組み込んだ小さなアプリケーションを実行します。これは、従来のWebアプリケーションサービスである可能性があります。 APIを使用することも、サーバーレスアプリケーションにすることもできます。

レシーバーの処理は比較的簡単です。必要な他の必要なサポートシステムは、構成管理/プロビジョニングへのアプローチ(サーバーがアプリケーションを実行するために必要なパッケージをどのように持っているか)、シークレット管理(サーバーがアクセスする方法)です。機密情報)およびルーティング(サブドメインを更新して正しいサーバーにルーティングする方法)

必要なサービスが構成されたAMIの準備、インフラストラクチャプロビジョニングロジックを備えたCloudFormationテンプレート、およびCodeDeployがデプロイメントを処理することを検討することには価値があります。

構成管理

これは実際にはあなたとあなたのチーム次第です。使用できるツールは多数ありますが、シェルスクリプトに依存することもできます。サーバーライフサイクルのどの時点で変更を適用するかは、リンクしたAMI設計記事で説明されています。

秘密の管理

これは、手元の情報を使用して対処するのが難しいトピックです。簡潔にするために、それはあなたとあなたのチームにまかせます。

ルーティング

ルーティングを処理する方法はいくつかあります。AWSが提供するApplication Load Balancer(ELB / NLBと混同しないでください)は、ホストベースのルーティングをサポートしています。または、NGINXやHAProxyなどのリバースプロキシを使用することもできます。新しい環境をプロビジョニングするときは、どのようなアプローチをとっても、このルーティングを(理想的には自動的に)更新する必要があります。

データベース/永続性レイヤーとゼロダウンタイムの展開をどのように処理するかを検討することを忘れないでください。永続化レイヤーで尋ねる質問は、チームがデータベースを共有するかどうか、それが移行などとどのように相互作用するかです。ゼロダウンタイムデプロイメントのトピックでは、CodeDeployが適切に処理する必要があります。もう1つ、単一のモバイルアプリケーションが異なる環境を指すように言及しましたが、これらのアプリケーションを環境にどのように指すのでしょうか。


あなたの答えにはたくさんのジュースがあります。少し分解できますか?たとえば、あなたが言及したさまざまなセクションで..もしそれらがあったら、それぞれから始めるための何かを私にくれませんか?
abbood

この回答を投稿したユーザーこのユーザーとの間関係はありますか?私はそれらが同じ「ユーザー」からのものであるに
違い

1

このセットアップは、aws code deployを使用して私にとって完全に機能しました:

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.