GitLab CI에서 Google App Engine 프로젝트 자동 배포

GitLab CI를 사용하여 App Engine 프로젝트를 자동 배포하는 단계를 요약합니다.

전제


  • 이미 App Engine 프로젝트를 만들고 있습니다
  • gcloud app deploy 명령을 사용한 수동 배포는 이미 수행 중입니다

  • 즉, "서비스 계정"과 "프로젝트 ID"가 있습니다.

    개인 키 만들기



    Google Cloud Platform 메뉴 'IAM 및 관리' → '서비스 계정'
    이번 대상 서비스 계정 설정에서 '키 만들기'를 선택합니다.



    JSON 형식으로 작성합니다.



    만들기를 클릭하면 JSON 파일 다운로드가 시작됩니다.
    이 파일을 GitLab 설정에서 사용합니다.

    설정 후이 JSON 파일을 영구적으로 삭제하십시오.

    GitLab 설정



    CI/CD Secret Variables 설정



    App Engine 프로젝트의 '프로젝트 ID'와 이전에 검색한 '개인 키'를 변수로 정의합니다.

    GitLab의 "Settings"→ "CI/CD"→ "Secret variables"의 "Expand"



    다음 내용의 변수를 정의합니다.



    Value


    PROJECT_ID_PRODUCTION
    프로젝트 ID

    DEPLOY_KEY_FILE_PRODUCTION
    비밀키



    개인 키 = 방금 검색한 JSON 파일의 모든 내용

    GitLab Runner 구축



    공식 문서 에 써 있는 대로 실행해 갑니다.

  • 바이너리 다운로드
    $ sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64
    

  • 실행 권한 부여
    $ sudo chmod +x /usr/local/bin/gitlab-runner
    

  • Runner 등록

    여기도 공식 문서 을 참고로 진행합니다.

  • 다음 명령 실행
    $ gitlab-runner register
    

  • GitLab 인스턴스의 URL 입력
    Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
    https://gitlab.com
    

  • 토큰 입력
    Please enter the gitlab-ci token for this runner
    xxx
    
    xxx 에 실제 토큰을 입력합니다. GitLab Setting -> CI/CD 에서 확인할 수 있습니다. (이미지의 검은 색 부분)



  • Runner 호스트 이름 입력
    Please enter the gitlab-ci description for this runner
    [hostame] my-runner
    

    뭐든지 좋지만 여기에 my-runner를 입력하십시오.

  • Runner와 연결할 태그 입력
    Please enter the gitlab-ci tags for this runner (comma separated):
    
    

    여기에 태그를 지정하지 않습니다. 아무것도 입력하지 않고 Enter.

  • Runner를 현재 프로젝트에 잠그거나 선택
    Whether to lock Runner to current project [true/false]:
    [true]: true
    

    우선 true .

  • Runner executor 입력
    Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
    shell
    
    shell를 선택합니다.


  • Runner 설치 및 실행
    $ cd ~
    $ gitlab-runner install
    $ gitlab-runner start
    

    여기서 일단 Runner가 움직이고 있는지 확인해 봅시다.
    $ gitlab-runner status
    gitlab-runner: Service is running!
    

    문제가 없으면 gitlab-runner: Service is running! 로 출력되어야합니다.

  • .gitlab-ci.yml 만들기



    다음과 같이 .gitlab-ci.yml 를 작성합니다.

    .gitlab-ci.yml
    stages:
      - deploy
    
    before_script:
      - bundle install
    
    deploy:
      stage: deploy
      script:
        - echo "deb http://packages.cloud.google.com/apt cloud-sdk-jessie main" | tee /etc/apt/sources.list.d/google-cloud-sdk.list
        - curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
        - apt-get update && apt-get install google-cloud-sdk --yes
        - echo $DEPLOY_KEY_FILE_PRODUCTION > /tmp/$CI_PIPELINE_ID.json
        - gcloud auth activate-service-account --key-file /tmp/$CI_PIPELINE_ID.json
        - gcloud --quiet --project $PROJECT_ID_PRODUCTION app deploy
        - rm /tmp/$CI_PIPELINE_ID.json
      only:
        - master
    

    이제 변경 사항이 master에 반영될 때마다 App Engine에 자동으로 배포됩니다.

    참고



    An easy guide to automatically deploy your Google App Engine project with Gitlab CI

    좋은 웹페이지 즐겨찾기