picture
  1. GitLab CI/CD

GitLab CI/CD 의 Pipeline을 사용해서 소스 코드의 변경 사항을 저장소에 반영 시, 클라우드타입에 배포한 서비스가 자동으로 업데이트 되도록 파이프라인을 구성할 수 있습니다. [GitLab CI/CD의 사용 방법은 🔗GitLab 에서 제공하는 가이드/문서에서 확인할 수 있으며, CI/CD 파이프라인과 관련된 설명은 🔗Cloudtype with Github Actions의 포스트를 참고해주세요.

준비사항

클라우드타입 디플로이 키 GitLab에 등록하기

비공개 GitLab 저장소에 접근하기 위해서 클라우드타입에서 생성한 SSH 디플로이 키를 GitLab의 계정에 등록해주어야 합니다.

클라우드타입의 환경설정 중 키 관리 화면으로 진입합니다.

디플로이 키 생성하기 버튼을 누르고 SSH 형식의 GitLab 저장소 주소를 필드에 입력합니다.

우측 꺾쇠를 클릭하면 생성된 디플로이 키를 확인할 수 있습니다. 외부로 유출되거나 공개적인 장소에 업로드 되지 않도록 유의합니다.

이제 생성된 디플로이 키를 GitLab에 등록하기 위해 Edit Profile > SSH Keys 화면으로 진입합니다.

Add new key 버튼을 누르고 클라우드타입에서 생성한 디플로이 키를 붙여넣습니다. 하단의 옵션은 다음을 참고하여 상황에 맞게 설정합니다.

  • Title: 등록된 키의 관리명
  • Usage type: Authentication
  • Expiration date: 등록된 키의 만료기간

디플로이 키가 정상적으로 저장되면 다음과 같은 화면을 확인할 수 있습니다.

클라우드타입 API key 발급하기

클라우드타입의 API Key 를 생성하고 저장소의 설정에서 시크릿으로 추가하는 작업이 필요합니다.
API Key 발급은 API Key 발급하기 페이지를 참고하세요.

저장소 환경변수 설정하기

앞서 생성한 클라우드타입 API key를 GitLab CI/CD 적용 대상 저장소에서 사용할 수 있도록 환경변수로 설정합니다. 저장소의 Settings > CI/CD 페이지로 이동하고 Variable 항목의 Add variable 버튼을 누릅니다.

환경변수를 등록하는 창이 표시되면 다음을 참고하여 각 필드에 값을 입력합니다.

  • Flags
    • Protect variable: 체크
    • Mask variable: 체크
    • Expand variable reference: 체크
  • Key: API_KEY_TOKEN
  • Value: 클라우드타입 API key

생성이 완료되면 다음과 같이 화면에서 내역을 확인할 수 있습니다.


Pipeline 적용

Pipeline 정의하기

1. Pipeline 설정 정보 확인

배포된 서비스 패널의 CLI 탭에 접근하면 CI/CD 구성에 필요한 yaml 형식의 명세를 확인할 수 있습니다. 해당 내용을 기반으로 손쉽게 배포 시스템을 구축할 수 있습니다.

2. Workflow 설정 파일 저장소 반영

GitLab CI/CD로 배포 자동화를 설정하기 위해서는 Pipeline 설정 파일 .gitlab-ci.yml을 해당 저장소의 루트 경로에 추가해주어야 합니다

  • .gitlab-ci.yml

    stages:
    - deploy
    deploy-job:
    image: node:latest
    cache:
    paths:
    - node_modules/
    only:
    - pushes
    - main
    stage: deploy
    script:
    - npm i -g @cloudtype/cli
    - ctype login -t $API_KEY_TOKEN
    - ctype use test:main
    - |
    cat <<EOF >> ./.cloudtype/app.yaml
    name: flask
    options:
    git:
    branch: main
    url: [email protected]:$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME.git
    env:
    - name: FLASK_ENV
    value: production
    ports: 5000
    start: gunicorn -b 0.0.0.0:5000 app:app
    EOF
    - cat ./.cloudtype/app.yaml
    - ctype apply -f ./.cloudtype/app.yaml
사용에 문제나 어려움이 있다면 디스코드 채널에서 문의하세요.
디스코드 링크