Google App Engine 과 Git을 이용한 자동 배포
개발자라면 누구나 원하는 자동화.
Git을 이용하여 개발을 할 경우 생각해 볼만한 것중 하나가 Git Push만 하고 나면 자동으로 서버가 올라가게 할 순 없을까? 하는것일꺼다.
당연히 있다.
Github에서 Webhook 을 이용하여 하는건....여기서 다룰 내용이 아니니 패스하고, 순수하게 GCP에서 제공해주는 서비스들만 구성하여 하는것을 이야기 해보고자 한다.
만들려는 일련의 과정은 다음과 같다.
Google Cloud Source Repository ( https://cloud.google.com/source-repositories/?hl=ko 이하 GCSR로 약칭 )에 Git Push를 한다.
Google Container Registry( https://cloud.google.com/container-builder/?hl=ko ) 에 있는 Build Trigger ( 이하 트리거 )를 이용하여 자동으로 빌드 ( 원래는 Docker Image를 빌드 할 수도 있지만, 간략하게 하기 위하여 여기서는 PHP 를 이용할 것임 )
빌드후 Google App Engine 으로 자동 배포
==========================
결국 설정만 해놓으면, Git 에서 Push만 하고 나면 사람이 할 일은 없는것이다.
그럼 순서대로 보겠다.
( 모든 설명은 한국어 메뉴 기준이다. )
저장소에서 임의의 저장소를 만든다. 여기서는 test라는 이름으로 하나 만들도록 한다.
생성된 저장소에 다음과 같은 파일을 업로드한다.
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를 한다. 그 다음에 빌드 트리거로 가서 트리거를 만든다.
Cloud Source 저장소를 선택한뒤, 저장소 선택을 하면 아까의 그 test 저장소가 나온다. 선택한다.
마지막으로 트리거를 설정하는 복잡한 화면에서는 아무것도 건들지 말고, 빌드구성을 cloudbuild.yaml 을 선택한다.
마지막으로 저장.
자 이제 소스코드를 수정한뒤 git push를 하거나 혹은 아래와 같은 화면에서 트리거 실행을 선택해 보자.
왼쪽의 빌드 기록을 보면 성공적으로 동작한것을 확인 할 수 있다.
그리고 App Engine으로 가서 확인을 해보면 다음과 같이 성공한것을 알 수 있다.
아. 중간에 빼먹은것이 있는데, IAM 을 수정해야 합니다. ( 아마 위에 그대로 하셨으면 중간에 오류가 났을껍니다. )
메뉴와 같이 IAM을 가서 CloudBuilder를 찾아 권한을 수정합니다.
기존에는 [ 클라우드 컨테이너 빌더 ] 권한만 있을것입니다. 여기에 [ App Engine 관리자 ] 권한을 추가합니다.
이제 다시 트리거로 가서 테스트를 해보시면 .. 성공리에 배포가 된것을 확인 할 수 있습니다.