Cloud Build로 App Engine 배포 자동화

이 빠른 시작에서는 새 커밋을 푸시한 후 Cloud Source Repositories에 저장된 앱을 App Engine에 자동 배포하는 방법을 보여줍니다.

시작하기 전에

  1. Cloud Source Repositories에서 코드 저장소 만들기의 단계를 완료합니다.

    빠른 시작을 완료하면 App Engine에 배포할 수 있는 앱이 준비됩니다.

  2. API App Engine Admin, Cloud Build 사용 설정

    API 사용 설정

Cloud Build 서비스 계정에 대한 App Engine 액세스 권한 부여

Cloud Build는 서비스 계정을 사용하여 코드를 배포합니다. 이 계정의 기본 권한은 App Engine에 배포 등과 같은 특정 작업을 허용하지 않습니다.

App Engine에 배포하려면 서비스 계정에 추가 Identity and Access Management(IAM) 역할을 부여하여 서비스 계정을 사용 설정합니다.

  1. Google Cloud Console에서 Cloud Build 설정 페이지를 엽니다.

    Cloud Build 설정 페이지 열기

    서비스 계정 권한 페이지가 표시됩니다.

    서비스 계정 권한 페이지입니다.

  2. App Engine 관리자 역할의 상태를 사용 설정됨으로 설정합니다.

앱 배포

  1. 터미널 창에서 저장소가 포함된 디렉터리로 이동합니다.

    cd hello-world
    
  2. 샘플 앱을 배포합니다.

    gcloud app deploy app.yaml
    
  3. 앱이 실행되는지 확인합니다.

    gcloud app browse
    

    앱이 실행되면 브라우저에 Hello, World!라는 메시지가 표시됩니다.

cloudbuild.yaml 파일 만들기

  1. 터미널 창에서 저장소가 포함된 디렉터리로 이동합니다.

    cd hello-world
    
  2. 텍스트 편집기를 사용하여 cloudbuild.yaml라는 파일을 만들고 다음 구성 정보를 붙여넣습니다.

    steps:
    - name: "gcr.io/cloud-builders/gcloud"
      args: ["app", "deploy"]
    timeout: "1600s"
    

cloudbuild.yaml 파일을 저장소에 추가

  1. cloudbuild.yaml을 저장소에 추가합니다.

    git add .
    
  2. 이 작업의 기록을 설명하는 주석이 포함된 파일을 커밋합니다.

    git commit -m "Add cloudbuild.yaml file"
    
  3. git push 명령어를 사용하여 로컬 Git 저장소의 콘텐츠를 Cloud Source Repositories에 추가합니다.

    git push origin master
    

빌드 트리거 만들기

  1. GCP Console에서 Cloud Build 트리거 페이지를 엽니다.

    트리거 페이지 열기

  2. Google Cloud 프로젝트를 선택하지 않았다면 프로젝트 선택을 클릭하고 Google Cloud 프로젝트의 이름을 클릭합니다.

  3. 트리거 만들기를 클릭합니다.

    트리거 만들기 페이지가 열립니다.

  4. 다음 옵션을 입력합니다.

    • 이름 필드에 app-engine-test를 입력합니다.
    • 이벤트에서 분기로 푸시를 선택합니다.
    • 소스에서 hello-world저장소로 선택하고 ^master$분기로 선택합니다.
    • 구성에서 Cloud Build 구성 파일(yaml 또는 json)을 선택합니다.
    • Cloud Build 구성 파일 위치 필드에 /cloudbuild.yaml을 차례로 입력합니다.
  5. 만들기를 클릭하여 빌드 트리거를 저장합니다.

앱에 변경사항 푸시

  1. 터미널 창에서 텍스트 편집기를 사용하여 다음 코드를 붙여넣고 main.py 파일을 업데이트합니다.

    #!/usr/bin/env python
    
    import webapp2
    
    class MainHandler(webapp2.RequestHandler):
        def get(self):
            self.response.write('I update automatically!')
    
    app = webapp2.WSGIApplication([
        ('/', MainHandler)
    ], debug=True)
    
  2. 파일을 Git에 추가합니다.

    git add .
    
  3. 이 작업의 기록을 설명하는 주석이 포함된 파일을 커밋합니다.

    git commit -m "Update app to demonstrate build triggers"
    
  4. git push 명령어를 사용하여 로컬 Git 저장소의 콘텐츠를 Cloud Source Repositories에 추가합니다.

    git push origin master
    

진행 중인 빌드 보기

  1. GCP Console에서 Cloud Build 트리거 페이지를 엽니다.

    트리거 페이지 열기

  2. Google Cloud 프로젝트를 선택하지 않았다면 프로젝트 선택을 클릭하고 Google Cloud 프로젝트의 이름을 클릭합니다.

  3. 기록을 클릭합니다.

    모든 빌드 목록이 열립니다. 맨 위에는 변경사항을 Cloud Source Repositories에 푸시한 후 시작된 빌드를 나타내는 새 항목이 있습니다. 빌드가 준비되면 빌드 항목 옆에 녹색 체크표시가 나타납니다.

앱 다시 테스트

터미널 창에서 앱을 엽니다.

gcloud app browse

이제 브라우저에 I update automatically!라는 메시지가 표시됩니다.

삭제

이 페이지에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 수행합니다.

빌드 트리거 삭제

  1. GCP Console에서 Cloud Build 트리거 페이지를 엽니다.

    트리거 페이지 열기

  2. Google Cloud 프로젝트를 선택하지 않았다면 프로젝트 선택을 클릭하고 Google Cloud 프로젝트의 이름을 클릭합니다.

  3. 삭제하려는 트리거와 동일한 행에서 더보기를 클릭한 다음 삭제를 클릭합니다.

저장소 삭제

  1. GCP Console에서 Cloud Source Repositories의 모든 저장소 페이지를 엽니다.

    Cloud Source Repositories 열기

  2. 삭제하려는 저장소 위에 마우스 포인터를 놓고 설정을 클릭합니다.

    일반 설정 페이지가 열립니다.

  3. 이 저장소 삭제를 클릭합니다. .

    저장소 삭제 대화상자가 열립니다.

  4. 삭제할 저장소의 이름을 입력합니다.

  5. 삭제를 클릭합니다.

다음 단계