Google App Engine 과 Git을 이용한 자동 배포

in #kr7 years ago

개발자라면 누구나 원하는 자동화.

Git을 이용하여 개발을 할 경우 생각해 볼만한 것중 하나가 Git Push만 하고 나면 자동으로 서버가 올라가게 할 순 없을까? 하는것일꺼다.

당연히 있다.

Github에서 Webhook 을 이용하여 하는건....여기서 다룰 내용이 아니니 패스하고, 순수하게 GCP에서 제공해주는 서비스들만 구성하여 하는것을 이야기 해보고자 한다.

만들려는 일련의 과정은 다음과 같다.

  1. Google Cloud Source Repository ( https://cloud.google.com/source-repositories/?hl=ko 이하 GCSR로 약칭 )에 Git Push를 한다.

  2. Google Container Registry( https://cloud.google.com/container-builder/?hl=ko ) 에 있는 Build Trigger ( 이하 트리거 )를 이용하여 자동으로 빌드 ( 원래는 Docker Image를 빌드 할 수도 있지만, 간략하게 하기 위하여 여기서는 PHP 를 이용할 것임 )

  3. 빌드후 Google App Engine 으로 자동 배포

==========================
결국 설정만 해놓으면, Git 에서 Push만 하고 나면 사람이 할 일은 없는것이다.
그럼 순서대로 보겠다.

( 모든 설명은 한국어 메뉴 기준이다. )

저장소에서 임의의 저장소를 만든다. 여기서는 test라는 이름으로 하나 만들도록 한다.
생성된 저장소에 다음과 같은 파일을 업로드한다.

screenshot 2018-03-08 23.27.26.png

3개의 파일을 만든다.
각각의 파일의 내용과 용도는 다음과 같다.
[ helloworld.php ]

<?php

echo 'Hello, World!6';

올리고자 하는 파일이다.

[ app.yaml ]

service: default
runtime: php55
api_version: 1

handlers:
- url: /.*
  script: helloworld.php
  secure: always

App Engine 을 설정하는 파일이다. 자세한 설명은 - https://cloud.google.com/appengine/docs/standard/php/config/appref

[ cloudbuild.yaml ]

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  args:
  - app
  - deploy

트리거가 해석하여 동작할 파일이다. 저 부분이 조금 고생했는데, steps는 트리거가 저 스텝대로 동작을 한다고 이해하면 된다. 좀더 자세한 설명은 다음 링크에 - https://cloud.google.com/container-builder/docs/create-custom-build-steps

이대로 저장을 한뒤 Git Push를 한다. 그 다음에 빌드 트리거로 가서 트리거를 만든다.
screenshot 2018-03-08 23.35.53.png

Cloud Source 저장소를 선택한뒤, 저장소 선택을 하면 아까의 그 test 저장소가 나온다. 선택한다.
마지막으로 트리거를 설정하는 복잡한 화면에서는 아무것도 건들지 말고, 빌드구성을 cloudbuild.yaml 을 선택한다.
screenshot 2018-03-08 23.37.14.png

마지막으로 저장.

자 이제 소스코드를 수정한뒤 git push를 하거나 혹은 아래와 같은 화면에서 트리거 실행을 선택해 보자.

screenshot 2018-03-08 23.39.00.png

왼쪽의 빌드 기록을 보면 성공적으로 동작한것을 확인 할 수 있다.

screenshot 2018-03-08 23.39.36.png

그리고 App Engine으로 가서 확인을 해보면 다음과 같이 성공한것을 알 수 있다.

screenshot 2018-03-08 23.40.37.png

아. 중간에 빼먹은것이 있는데, IAM 을 수정해야 합니다. ( 아마 위에 그대로 하셨으면 중간에 오류가 났을껍니다. )
screenshot 2018-03-08 23.48.46.png

메뉴와 같이 IAM을 가서 CloudBuilder를 찾아 권한을 수정합니다.
기존에는 [ 클라우드 컨테이너 빌더 ] 권한만 있을것입니다. 여기에 [ App Engine 관리자 ] 권한을 추가합니다.
이제 다시 트리거로 가서 테스트를 해보시면 .. 성공리에 배포가 된것을 확인 할 수 있습니다.