機能ブランチのデプロイとチームのワークフロー - AWS Amplify

機能ブランチのデプロイとチームのワークフロー

Amplify コンソールは、機能ブランチと GitFlow ワークフローで動作するように設計されています。Amplify コンソールは、Git のブランチを活用して、開発者がリポジトリの新しいブランチに接続するたびに新しいデプロイを作成します。最初のブランチを接続したら、次のようにブランチを追加して新しい機能ブランチのデプロイを作成できます。

  1. ブランチリストのページで、[Connect branch (ブランチの接続)] を選択します。

  2. リポジトリからブランチを選択します。

  3. アプリを保存してからデプロイします。

お客様のアプリには、https://master.appid.amplifyapp.comhttps://dev.appid.amplifyapp.com で利用可能な 2 つのデプロイがあります。これはチーム間で異なる場合がありますが、通常は master ブランチはリリースコードを追跡します。また、本稼働ブランチでもあります。開発ブランチは、新機能をテストするための統合ブランチとして使用されます。このようにして、ベータテスターは master ブランチデプロイの本稼働エンドユーザーに影響を及ぼすことなく、開発ブランチデプロイの未リリース機能をテストできます。

Amplify CLI バックエンド環境を使用したチームワークフロー

機能ブランチのデプロイはフロントエンドと [(オプション) バックエンド] (https://docs.aws.amazon.com/amplify/latest/userguide/deploy-backend.html) で構成されています。フロントエンドはグローバル CDN に構築およびデプロイされ、バックエンドは Amplify CLI によって AWS にデプロイされます。Amplify コンソールを使用して、機能ブランチのデプロイで GraphQL API や Lambda 関数などのバックエンドリソースを継続的にデプロイすることができます。次のモデルを使用して、バックエンドとフロントエンドを Amplify コンソールでデプロイできます。

機能ブランチのワークフロー

  • Amplify CLI で、prodtestdev バックエンド環境を作成します。

  • prod および testmaster および develop ブランチにマッピングします。

  • チームメイトは、dev バックエンド環境を使用して、機能ブランチを検証することができます。

  1. Amplify CLI をインストールして新しい Amplify プロジェクトを初期化します。

    npm install -g @aws-amplify/cli
  2. プロジェクト用の prod バックエンド環境を初期化します。プロジェクトがない場合は、create-react-app や Gatsby などのブートストラップツールを使用してプロジェクトを作成します。

    create-react-app next-unicorn cd next-unicorn amplify init ? Do you want to use an existing environment? (Y/n): n ? Enter a name for the environment: prod ... amplify push
  3. test 環境と dev バックエンド環境を追加します。

    amplify env add ? Do you want to use an existing environment? (Y/n): n ? Enter a name for the environment: test ... amplify push amplify env add ? Do you want to use an existing environment? (Y/n): n ? Enter a name for the environment: dev ... amplify push
  4. 選択した Git リポジトリにコードをプッシュします (この例では、master にプッシュしたと仮定します)。

    git commit -am 'Added dev, test, and prod environments' git push origin master
  5. リポジトリ > ブランチ master の順に Amplify コンソールに接続します。

  6. Amplify コンソールは、Amplify CLI によって作成されたバックエンド環境を検出します。ドロップダウンから prod を選択し、サービスロールを Amplify コンソールに付与します。[保存してデプロイ] を選択します。ビルドが完了したら、https://master.appid.amplifyapp.com で利用可能な master ブランチのデプロイを取得します。

  7. Amplify コンソールで develop ブランチを接続します (この時点で develop ブランチと master ブランチは同じであることを前提としています)。テストバックエンド環境を選択します。

  8. Amplify コンソールが設定されました。機能ブランチで新機能を使用することができます。ローカルワークステーションの dev バックエンド環境を使用して、バックエンド機能を追加します。

    git checkout -b newinternet amplify env checkout dev amplify add api ... amplify push
  9. 機能を使用するための準備が整ったら、コードをコミットして、内部でレビューするためのプルリクエストを作成します。

    git commit -am 'Decentralized internet v0.1' git push origin newinternet
  10. 変更内容をプレビューするには、コンソールに移動して機能ブランチを接続します。注: AWS CLI がシステムにインストールされている場合 (Amplify CLI ではない)、ターミナルから直接ブランチに接続できます。アプリ ID を検索するには、[App settings] > [General] > AppARN: arn:aws:amplify:<region>:<region>:apps/<appid> の順に進みます。

    aws amplify create-branch --app-id <appid> --branch-name <branchname> aws amplify start-job --app-id <appid> --branch-name <branchname> --job-type RELEASE
  11. https://newinternet.appid.amplifyapp.com から機能にアクセスして、チームメイトと共有できるようになります。問題なければ、PR を develop ブランチにマージします。

    git checkout develop git merge newinternet git push
  12. これにより、https://dev.appid.amplifyapp.com のブランチデプロイで、Amplify コンソールのバックエンドとフロントエンドを更新するビルドが開始されます。新機能を確認できるように、このリンクを社内の関係者と共有することができます。

  13. Git の Amplify コンソールから機能ブランチを削除し、クラウドからバックエンド環境を削除します (「amplify env checkout prod」および「amplify env add」を実行することで、いつでも新しい環境にスピンアップできます)。

    git push origin --delete newinternet aws amplify delete-branch --app-id <appid> --branch-name <branchname> amplify env remove dev

GitFlow ワークフロー

GitFlow は2 つのブランチを使ってプロジェクトの履歴を記録します。master ブランチでは、リリースコードのみ追跡し、develop ブランチは、新機能の統合ブランチとして使用されます。GitFlow は、完了した作業から新しい開発を切り離すことによって、並列開発を簡素化します。新機能の開発 (機能や緊急ではないバグの修正など) は機能ブランチで行われます。開発者がコードのリリース準備が整ったことを確認すると、機能ブランチは統合開発ブランチにマージされます。master ブランチへの唯一のコミットは release ブランチと hotfix ブランチからのマージです (緊急のバグを修正するため)。

以下の図は GitFlow で推奨された設定を示します。上記の機能ブランチのワークフローのセクションで説明したプロセスと同じプロセスに従って行うことができます。

開発者ごとのサンドボックス

  • チーム内の各開発者は、自分のローカルコンピュータとは別に、サンドボックス環境をクラウド内に作成すること。これにより、開発者は他のチームメンバーの変更を上書きすることなく互いに独立して作業することができます。

  • Amplify コンソールの各ブランチには独自のバックエンドがあります。これにより、Amplify コンソールは、チームの開発者が自分のローカルコンピュータから本稼働環境に手動でバックエンドやフロントエンドをプッシュするのではなく、Git リポジトリを変更のデプロイ元となる唯一の真のソースとして使用します。

  1. Amplify CLI をインストールして新しい Amplify プロジェクトを初期化します。

    npm install -g @aws-amplify/cli
  2. プロジェクト用の kita バックエンド環境を初期化します。プロジェクトがない場合は、create-react-app や Gatsby などのブートストラップツールを使用してプロジェクトを作成します。

    cd next-unicorn amplify init ? Do you want to use an existing environment? (Y/n): n ? Enter a name for the environment: kita ... amplify push
  1. 選択した Git リポジトリにコードをプッシュします (この例では、master にプッシュしたと仮定します)。

    git commit -am 'Added kita sandbox' git push origin master
  2. リポジトリ > master の順に、Amplify コンソールに接続します。

  3. Amplify コンソールは、Amplify CLI によって作成されたバックエンド環境を検出します。ドロップダウンから [Create new environment (新しい環境の作成)] を選択し、サービスロールを Amplify コンソールに付与します。[保存してデプロイ] を選択します。ビルドが完了したら、ブランチにリンクされている新しいバックエンド環境を持つ、https://master.appid.amplifyapp.com で利用可能な master ブランチのデプロイを取得します。

  4. Amplify コンソールで develop ブランチを接続し (この時点で develop ブランチと master ブランチは同じであることを前提としています)、[新しい環境の作成] を選択します。ビルドが完了したら、ブランチにリンクされている新しいバックエンド環境を持つ、https://develop.appid.amplifyapp.com で利用可能な develop ブランチのデプロイを取得します。

パターンベースのブランチ機能ブランチのデプロイ

パターンベースのブランチデプロイでは、特定のパターンに一致するブランチを自動的に Amplify コンソールにデプロイできます。リリースに機能ブランチまたは GitFlow ワークフローを使用している製品チームは、「release**」のようなパターンを定義して、「release」で始まる Git ブランチを共有可能な URL に自動的にデプロイできるようになりました。このブログ記事では、さまざまなチームワークフローでこの機能を使用する方法について説明します。

  1. [App settings] > [General] > [Edit] の順に選択します。

  2. ブランチの自動検出スイッチを有効にします。

  1. ブランチを自動的にデプロイするためのパターンを定義します。

    • '*' では、リポジトリにすべてのブランチがデプロイされます。

    • 'release*' は 'release という単語が含まれているすべてのブランチを自動的にデプロイします。

    • 'release*/ 「release /」パターンに一致するすべてのブランチをデプロイします。

    • 複数のパターンをカンマで区切って指定します (例: 'release*', 'feature*')

  2. [Branch autodetection - access control] を [Enabled] に設定して、自動的に作成されるすべてのブランチに対して自動パスワード保護を設定します。

  3. Amplify バックエンドを使用して構築されたアプリケーションの場合は、新しい環境を作成するか、すべてのブランチを既存のバックエンドにポイントするかを選択できます。