App Hosting 빌드 프로세스

Firebase App HostingCloud Build을 활용하여 애플리케이션 소스 코드를 Cloud Run에 배포하기에 적합한 컨테이너화된 형식으로 변환합니다.

빌드 프로세스는 다음 주요 단계를 통해 작동합니다.

  1. ubuntu: 작업공간 초기화

  2. preparer: 애플리케이션 소스 코드 및 구성을 수집합니다.

  3. pre-buildpack: 빌드팩 환경을 준비합니다.

  4. build: 종속 항목을 설치하고 애플리케이션을 빌드합니다.

  5. publisher: 프로덕션 Cloud Run 컨테이너를 마무리합니다.

이러한 5단계는 Cloud BuildGoogle Cloud 콘솔에 표시된 빌드 단계에 직접 해당합니다.

Cloud Build 단계의 Google Cloud 콘솔 뷰 화면 캡처

작업공간 초기화

이 단계는 ubuntu 빌드 단계에 해당합니다. 빌드 작업공간을 초기화하여 후속 빌드 단계에서 사용하는 디렉터리에 올바른 파일 권한이 설정되도록 합니다.

준비자

이 단계는 빌드 전 로직을 처리합니다. 사용자 정의 환경 변수를 읽고, 삭제하고, 씁니다. 또한 apphosting.yaml 파일에 지정된 비밀번호를 역참조하고 고정합니다.

빌드 전 빌드팩

이 단계에서는 Cloud Native Buildpacks 수명 주기를 위한 환경을 준비합니다. 여기에는 이전 단계에서 준비한 구성 및 환경 변수를 CNB 도구에서 예상하는 형식으로 변환하는 shim을 실행하는 작업이 포함됩니다.

빌드

실행 가능한 컨테이너 이미지와 빌드 구성을 정의하는 bundle.yaml 파일을 생성하는 빌드 프로세스의 핵심입니다. Cloud Native Buildpacks 및 수명 주기 생성기 바이너리를 활용하여 애플리케이션을 효율적으로 패키징합니다. bundle.yaml 파일에 관한 자세한 내용은 GitHub에서 확인할 수 있습니다.

빌드팩은 애플리케이션 소스 코드를 프로덕션 준비 컨테이너 이미지로 변환합니다. Firebase App Hosting은 여러 빌드팩을 연결하여 빌드 프로세스를 완료합니다.

  1. 런타임 빌드팩: 기본 Node.js 애플리케이션을 실행하는 데 필요한 모든 구성요소가 포함되고 종속 항목이 설치되도록 합니다.
  2. 모노레포 빌드팩: 다양한 모노레포 시나리오를 처리하도록 후속 빌드팩을 구성합니다.
  3. 프레임워크 빌드팩: 올바른 프레임워크 어댑터 (예: Angular 또는 Next.js)를 설치하고 후속 빌드팩을 준비합니다.

    프레임워크 어댑터는 프로덕션 빌드 명령어를 실행하고 관련 프레임워크별 구성 값을 App Hosting에서 읽을 수 있는 표준 형식에 매핑하는 작업을 담당합니다.

  4. 패키지 관리자 빌드팩: 종속 항목 설치를 실행하고 npm, yarn 또는 pnpm을 사용하여 앱을 빌드합니다.

  5. 출력 번들 빌드팩: 실행 명령어를 정의하고 실행을 위한 출력 번들을 준비합니다.

게시자

이 최종 단계에서는 애플리케이션 소스 코드에서 추출된 모든 정보와 빌드 컨테이너 이미지를 패키징하여 App Hosting 백엔드로 전송합니다. 그러면 App Hosting 백엔드에서 이 정보를 사용하여 적절한 구성으로 Cloud Run을 설정합니다.

빌드 정리 정책

Firebase App Hosting 은 자동 빌드 보관 및 삭제 정책을 시행합니다. 이 정책에 따라 App Hosting은(는) 지난 14일 동안의 성공적인 빌드와 연결된 Cloud Run 수정 버전을 보관합니다. 또한 항상 롤백할 수 있는 빌드를 보유할 수 있도록 App Hosting은 기간에 관계없이 가장 최근의 성공적인 빌드 및 출시 5개를 보관합니다.

App Hosting은 현재 활성 트래픽 분할에 있거나 진행 중인 출시와 연결된 빌드를 삭제하거나 제거하지 않습니다.

이러한 보관 한도를 초과하는 이전 빌드의 내부 상태는 EXPIRED로 업데이트됩니다. EXPIRED 빌드에 대해 즉시 롤백을 실행할 수 없으며 이러한 빌드로 롤백하는 옵션이 Firebase 콘솔에서 삭제됩니다. 대신 동일한 소스(git 커밋, Artifact Registry의 컨테이너 또는 Google Cloud Storage 버킷)를 타겟팅하는 새 빌드를 만들고 출시해야 합니다.

빌드 리소스를 보존하는 한 가지 방법은 자동 출시를 트리거하는 빈도를 제어하는 것입니다. 자동 출시 관리를 참조하세요.

자세히 알아보기

전체 App Hosting 빌드 프로세스는 오픈소스입니다.