모노레포 빌드 설정 - AWS Amplify 호스팅

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

모노레포 빌드 설정

단일 리포지토리에 여러 프로젝트 또는 마이크로서비스를 저장하는 것을 모노레포라고 합니다. Amplify Hosting을 사용하면 여러 빌드 구성 또는 브랜치 구성을 만들지 않고도 애플리케이션을 모노레포로 배포할 수 있습니다.

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 애플리케이션을 선언하는 방법을 설명합니다. 두 앱 react-app, angular-appapplications 목록에 선언되어 있습니다. 각 앱의 appRoot 키는 앱이 리포지토리의 apps 루트 폴더에 있음을 나타냅니다.

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*

AMPLIFY_MONOREPO_APP_ROOT 환경 변수 설정

모노레포에 저장된 앱을 배포하는 경우, 앱의 AMPLIFY_MONOREPO_APP_ROOT 환경 변수는 리포지토리의 루트를 기준으로 앱 루트 경로와 동일한 값을 가져야 합니다. 예를 들어, 이름이 apps으로 지정된 루트 폴더가 있고 app1, app2, app3을 포함하는 ExampleMonorepo라는 이름의 모노레포는 다음 디렉터리 구조를 가집니다.

ExampleMonorepo apps app1 app2 app3

이 예제에서 app1에 대한 AMPLIFY_MONOREPO_APP_ROOT 환경 변수의 값은 apps/app1입니다.

Amplify 콘솔을 사용하여 모노레포 앱을 배포하면 콘솔은 앱의 루트 경로에 지정한 값을 사용하여 AMPLIFY_MONOREPO_APP_ROOT 환경 변수를 자동으로 설정합니다. 그러나 monorepo 앱이 이미 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. 웹 앱 호스팅 페이지에서 Git 공급자를 선택한 다음, 계속을 선택합니다.

  4. 리포지토리 브랜치 추가 페이지에서 다음을 수행합니다.

    1. 최근 업데이트된 리포지토리 목록에서 리포지토리 이름을 선택합니다.

    2. 브랜치에는 사용할 브랜치의 이름을 선택합니다.

    3. 모노레포에 연결하시겠습니까?를 선택합니다. 폴더를 선택합니다.

    4. 모노레포에 앱 경로를 입력합니다(예: apps/app1).

    5. 다음을 선택합니다.

  5. 빌드 설정 페이지에서 기본 설정을 사용하거나 앱의 빌드 설정을 사용자 지정할 수 있습니다. 다음 예제 스크린샷의 환경 변수 섹션에서 Amplify는 4d단계에서 지정한 경로를 사용하여 AMPLIFY_MONOREPO_APP_ROOT을(를) apps/app1으(로) 설정했습니다.

    
                Amplify 콘솔의 빌드 설정 구성 페이지입니다.
  6. 다음을 선택합니다.

  7. 검토 페이지에서 저장 및 배포를 선택합니다.

기존 앱에 AMPLIFY_MONOREPO_APP_ROOT 환경 변수 설정

다음 지침에 따라 Amplify에 이미 배포되었거나 를 사용하여 만든 앱의 AMPLIFY_MONOREPO_APP_ROOT 환경 변수를 수동으로 설정하십시오. CloudFormation

기존 앱에 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 파일에서 Node 패키지 설치를 위한 링커를 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