기능 브랜치 배포 및 팀 워크플로우 - AWS Amplify

기능 브랜치 배포 및 팀 워크플로우

Amplify 콘솔은 기능별 브랜치 및 GitFlow 워크플로에서 작동하도록 설계되었습니다. Amplify 콘솔은 개발자가 리포지토리의 새 브랜치를 연결할 때마다 Git 브랜치를 활용하여 새 배포를 만듭니다. 첫 번째 브랜치를 연결한 후 다음과 같이 브랜치를 추가하여 새 기능 브랜치 배포를 만들 수 있습니다.

  1. 브랜치 목록 페이지에서 브랜치 연결을 선택합니다.

  2. 리포지토리에서 브랜치를 선택합니다.

  3. 앱을 저장한 후 배포합니다.

이제 앱은 https://master.appid.amplifyapp.comhttps://dev.appid.amplifyapp.com에서 두 가지 배포를 사용할 수 있습니다. 이는 팀에 따라 다를 수 있지만 일반적으로 마스터 브랜치가 릴리스 코드를 추적하며 프로덕션 브랜치입니다. 개발 브랜치는 새 기능을 테스트하는 데 통합 브랜치로 사용됩니다. 이러한 방식으로 베타 테스터는 마스터 브랜치 배포와 관련하여 어떠한 프로덕션 최종 사용자에게도 영향을 주지 않고, 개발 브랜치 배포와 관련하여 릴리스되지 않은 기능을 테스트할 수 있습니다.

팀 워크플로우와 Amplify CLI 백엔드 환경

기능 브랜치 배포는 프런트엔드와 [(선택적으로) 백엔드]로 구성됩니다(https://docs.aws.amazon.com/amplify/latest/userguide/deploy-backend.html). 프런트엔드는 빌드된 후 글로벌 CDN에 배포되지만, 백엔드는 Amplify CLI에 의해 AWS에 배포됩니다. Amplify 콘솔을 사용하여 기능 브랜치 배포와 함께 GraphQL API 및 Lambda 함수와 같은 백엔드 리소스를 지속적으로 배포할 수 있습니다. 다음 모델을 사용하여 Amplify 콘솔로 백엔드 및 프런트엔드를 배포할 수 있습니다.

기능 브랜치 워크플로

  • Amplify CLI로 prod, testdev 백엔드 환경을 생성합니다.

  • prodtest마스터개발 브랜치로 매핑합니다.

  • 팀 메이트는 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. testdev 백엔드 환경을 추가합니다.

    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 리포지토리로 코드를 푸시합니다(이 예에서는 사용자가 마스터에게 푸시한 것으로 가정함).

    git commit -am 'Added dev, test, and prod environments' git push origin master
  5. repo > branch master를 Amplify 콘솔에 연결합니다.

  6. Amplify 콘솔은 Console Amplify CLI에 의해 형성된 백엔드 환경을 감지합니다. 드롭다운에서 prod를 선택하고 Amplify 콘솔에 서비스 역할을 부여합니다. 저장 및 배포를 선택합니다. 빌드가 완료된 후 https://master.appid.amplifyapp.com에서 사용 가능한 마스터 브랜치 배포를 받게 됩니다.

  7. Amplify 콘솔에서 develop 브랜치를 연결합니다(이 시점에 developmaster 브랜치가 동일한 것으로 가정함). test 백엔드 환경을 선택합니다.

  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이 아님) 터미널에서 바로 브랜치를 연결할 수 있습니다. 애플리케이션 설정 > 일반 > AppARN: arn:aws:amplify:<region>:<region>:apps/<appid>으로 이동하여 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을 개발 브랜치에 병합합니다.

    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는 두 개의 브랜치를 사용하여 프로젝트 이력을 기록합니다. 마스터 브랜치는 릴리스 코드만 추적하고 개발 브랜치는 새로운 기능의 통합 브랜치로 사용됩니다. GitFlow는 새로운 개발과 완성된 작업을 분리하여 병렬 개발을 단순화합니다. 새로운 개발(예: 기능 및 비정기적인 버그 수정)은 기능 브랜치에서 수행됩니다. 개발자가 코드를 릴리스할 준비가 완료되면 기능 브랜치는 통합 개발 브랜치로 병합됩니다. 마스터 브랜치에 대한 커밋만 릴리스 브랜치와 핫픽스 브랜치를 병합합니다(긴급 버그 수정).

아래의 다이어그램은 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 리포지토리로 코드를 푸시합니다(이 예에서는 사용자가 마스터에게 푸시한 것으로 가정함).

    git commit -am 'Added kita sandbox' git push origin master
  2. repo > master를 Amplify 콘솔에 연결합니다.

  3. Amplify 콘솔은 Console Amplify CLI에 의해 형성된 백엔드 환경을 감지합니다. 드롭다운에서 새 환경 생성을 선택하고 Amplify 콘솔에 서비스 역할을 부여합니다. 저장 및 배포를 선택합니다. 빌드가 완료된 후 https://master.appid.amplifyapp.com에서 사용 가능한 마스터 브랜치 배포를 받게 되고 새 백엔드 환경은 브랜치에 연결됩니다.

  4. Amplify 콘솔에서 develop 브랜치를 연결하고(이 시점에 developmaster 브랜치가 동일한 것으로 가정함) 새 환경 생성을 선택합니다. 빌드가 완료된 후 https://develop.appid.amplifyapp.com에서 사용 가능한 개발 브랜치 배포를 받게 되고 새 백엔드 환경은 브랜치에 연결됩니다.

패턴 기반 브랜치 기능 브랜치 배포

배턴 기반 브랜치 배포를 사용하면 특정 패턴을 Amplify 콘솔에 일치시키는 브랜치를 자동으로 배포할 수 있습니다. 릴리스에 대해 기능 브랜치나 GitFlow 워크플로우를 사용하는 제품 팀은 이제 공유 가능한 URL에 ‘release’로 시작하는 Git 브랜치를 자동으로 배포하도록 'release**'와 같은 패턴을 정의할 수 있습니다. 이 블로그 게시물에서는 팀 워크플로우가 다른 이러한 기능의 사용을 설명합니다.

  1. 애플리케이션 설정 > 일반 > 편집을 선택합니다.

  2. 브랜치 자동 감지 스위치를 활성으로 전환합니다.

  1. 브랜치를 자동으로 배포하기 위한 패턴을 정의합니다.

    • '*'는 리포지토리의 모든 브랜치를 배포합니다.

    • 'release*'는 'release’로 시작하는 모든 브랜치를 자동으로 배포합니다.

    • 'release*/ '는 'release /' 패턴과 일치하는 모든 브랜치를 배포합니다.

    • 쉼표로 구분된 여러 패턴을 지정합니다(예: 'release*', 'feature*').

  2. 브랜치 자동 감지 - 액세스 제어활성으로 설정하여 자동으로 생성되는 모든 브랜치에 대해 자동 암호 보호를 설정합니다.

  3. 백엔드로 빌드된 애플리케이션의 경우 새 환경을 생성하거나 기존 백엔드에 대해 모든 브랜치를 가리키도록 선택할 수 있습니다.