モノレポビルド設定の構成 - AWS Amplify ホスティング

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

モノレポビルド設定の構成

複数のプロジェクトやマイクロサービスを単一のリポジトリに格納することをモノレポと呼びます。Amplify ホスティングを使用すると、複数のビルド構成やブランチ構成を作成しなくても、モノレポにアプリケーションをデプロイできます。

Amplify は、一般的なモノレポのアプリだけでなく、npm ワークスペース、pnpm ワークスペース、Yarn ワークスペース、Nx、および Turborepo を使用して作成されたモノレポのアプリもサポートします。アプリをデプロイすると、Amplify は使用しているモノレポビルドツールを自動的に検出します。Amplify は、npmワークスペース、Yarnワークスペース、またはNxのアプリにビルド設定を自動的に適用します。Turborepo と pnpm アプリには、追加設定が必要です。詳細については、「Turborepo アプリと pnpm モノレポアプリの設定」を参照してください。

モノレポのビルド設定は Amplify コンソールに保存することも、amplify.yml ファイルをダウンロードしてリポジトリのルートに追加することもできます。Amplify は、リポジトリで amplify.yml ファイルを見つけない限り、コンソールに保存された設定をすべてのブランチに適用します。amplify.yml ファイルが存在する場合、その設定は Amplify コンソールに保存されているビルド設定よりも優先されます。

モノレポビルド仕様 YAML 構文のリファレンス

モノレポビルド仕様の YAML 構文は、単一のアプリケーションを含むリポジトリの YAML 構文とは異なります。モノレポでは、各プロジェクトをアプリケーションのリストで宣言します。モノレポビルド仕様で宣言するアプリケーションごとに、以下の追加 appRoot キーを指定する必要があります。

appRoot

アプリケーションが起動するリポジトリ内のルート。キーは必ず存在する必要があり、環境変数 AMPLIFY_MONOREPO_APP_ROOT と同じ値となります。この環境変数を設定する手順については、AMPLIFY_MONOREPO_APP_ROOT 環境変数の設定 を参照してください。

以下のモノレポビルド仕様の例は、同じリポジトリで複数の Amplify アプリケーションを宣言する方法を示しています。2 つのアプリ (react-appangular-app) は applications リストで宣言されます。各アプリの appRoot キーは、そのアプリケーションがリポジトリの apps ルートフォルダーにあることを示しています。

この buildpath 属性は、モノレポプロジェクトルートからアプリを実行してビルドするように / に設定されます。baseDirectory 属性は の相対パスですbuildpath

version: 1 applications: - appRoot: apps/react-app env: variables: key: value backend: phases: preBuild: commands: - *enter command* build: commands: - *enter command* postBuild: commands: - *enter command* frontend: buildPath: / # Run install and build from the monorepo project root phases: preBuild: commands: - *enter command* - *enter command* build: commands: - *enter command* artifacts: files: - location - location discard-paths: yes baseDirectory: location cache: paths: - path - path test: phases: preTest: commands: - *enter command* test: commands: - *enter command* postTest: commands: - *enter command* artifacts: files: - location - location configFilePath: *location* baseDirectory: *location* - appRoot: apps/angular-app env: variables: key: value backend: phases: preBuild: commands: - *enter command* build: commands: - *enter command* postBuild: commands: - *enter command* frontend: phases: preBuild: commands: - *enter command* - *enter command* build: commands: - *enter command* artifacts: files: - location - location discard-paths: yes baseDirectory: location cache: paths: - path - path test: phases: preTest: commands: - *enter command* test: commands: - *enter command* postTest: commands: - *enter command* artifacts: files: - location - location configFilePath: *location* baseDirectory: *location*

次のビルド仕様例を使用するアプリは、プロジェクトルートの下にビルドされ、ビルドアーティファクトは にあります/packages/nextjs-app/.next

applications: - frontend: buildPath: '/' # run install and build from monorepo project root phases: preBuild: commands: - npm install build: commands: - npm run build --workspace=nextjs-app artifacts: baseDirectory: packages/nextjs-app/.next files: - '**/*' cache: paths: - node_modules/**/* appRoot: packages/nextjs-app

AMPLIFY_MONOREPO_APP_ROOT 環境変数の設定

モノレポに保存されたアプリをデプロイする場合、アプリの環境変数 AMPLIFY_MONOREPO_APP_ROOT は、リポジトリのルートを基準にしたアプリルートのパスと同じ値でなければなりません。たとえば、ExampleMonorepo という名前のモノレポに、app1app2 を含む apps という名前のルートフォルダがあり、app3 は次のようなディレクトリ構造を持つとします。

ExampleMonorepo apps app1 app2 app3

この例では、app1 の環境変数 AMPLIFY_MONOREPO_APP_ROOT の値は apps/app1 です。

Amplify コンソールを使用してモノレポアプリをデプロイすると、コンソールはアプリのルートへのパスに指定した値を使用して環境変数 AMPLIFY_MONOREPO_APP_ROOT を自動的に設定します。ただし、モノレポアプリが既に Amplify に存在するか、 を使用してデプロイされている場合は AWS CloudFormation、Amplify コンソールのAMPLIFY_MONOREPO_APP_ROOT環境変数セクションで環境変数を手動で設定する必要があります。

デプロイ時に AMPLIFY_MONOREPO_APP_ROOT 環境変数を自動的に設定する

以下の手順は、Amplify コンソールでモノレポアプリをデプロイする方法を示しています。Amplify は、コンソールで指定したアプリのルートフォルダーを使用して環境変数 AMPLIFY_MONOREPO_APP_ROOT を自動的に設定します。

Amplify コンソールでモノレポアプリをデプロイするには
  1. にサインイン AWS Management Console し、Amplify コンソールを開きます。

  2. 右上隅の [アプリの新規作成] を選択します。

  3. [Amplify で構築を開始する] ページで、お使いの Git プロバイダーを選択し、[次へ] を選択します。

  4. [リポジトリブランチを追加] ページで、次の操作を行います。

    1. リストからリポジトリの名前を選択します。

    2. 使用するブランチの名前を選択します。

    3. [My アプリがモノレポです] を選択する

    4. モノレポにアプリへのパスを入力します (例:apps/app1)。

    5. [Next (次へ)] を選択します。

  5. [アプリ設定] ページでは、デフォルト設定を使用するか、アプリのビルド設定をカスタマイズできます。[環境変数] セクションで、Amplify はステップ 4d で指定したパスに AMPLIFY_MONOREPO_APP_ROOT を設定します。

  6. [Next (次へ)] を選択します。

  7. [確認]ページ で、[保存してデプロイ]を選択します。

既存のアプリケーションの AMPLIFY_MONOREPO_APP_ROOT 環境変数を設定する

以下の手順を使用して、Amplify にすでにデプロイされているアプリ、または CloudFormation を使用して作成されたアプリの環境変数 AMPLIFY_MONOREPO_APP_ROOT を手動で設定します。

既存のアプリケーションの AMPLIFY_MONOREPO_APP_ROOT 環境変数を設定するには
  1. にサインイン AWS Management Console し、Amplify コンソールを開きます。

  2. 環境変数を設定するアプリの名前を選択します。

  3. ナビゲーションペインで、[ホスティング][環境変数] の順で選択します。

  4. 環境変数」ページで、[変数の管理] を選択します。

  5. [変数の管理]セクションで、次の操作を行います。

    1. [新規追加] を選択します。

    2. [変数] にはキー AMPLIFY_MONOREPO_APP_ROOT を入力します。

    3. [] には、アプリへのパスを入力します (例:apps/app1)。

    4. [ブランチ] の場合、Amplify はデフォルトで環境変数をすべてのブランチに適用します。

  6. [保存] を選択します。

Turborepo アプリと pnpm モノレポアプリの設定

Turborepo と pnpm ワークスペースのモノレポビルドツールは .npmrc ファイルから構成情報を取得します。これらのツールのいずれかで作成したモノレポアプリをデプロイする場合、プロジェクトのルートディレクトリに .npmrc ファイルを置く必要があります。

この .npmrc ファイルで、ノードパッケージをインストールするためのリンカーを hoisted に設定します。以下の行をファイルにコピーできます。

node-linker=hoisted

.npmrcファイルと設定について詳しくは、pnpm ドキュメントの pnpm .npmrc を参照してください。

pnpm は Amplify のデフォルトビルドコンテナには含まれていません。pnpm ワークスペースと Turborepo アプリの場合、アプリのビルド設定の preBuild 段階で pnpm をインストールするコマンドを追加する必要があります。

次のビルド仕様からの抜粋例は、pnpm をインストールするコマンドを含む preBuild フェーズを示しています。

version: 1 applications: - frontend: phases: preBuild: commands: - npm install -g pnpm