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:- deploydeploy-job:image: node:latestcache:paths:- node_modules/only:- pushes- mainstage: deployscript:- npm i -g @cloudtype/cli- ctype login -t $API_KEY_TOKEN- ctype use test:main- |cat <<EOF >> ./.cloudtype/app.yamlname: flaskapp: [email protected]options:git:branch: mainurl: [email protected]:$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME.gitenv:- name: FLASK_ENVvalue: productionports: 5000start: gunicorn -b 0.0.0.0:5000 app:appEOF- cat ./.cloudtype/app.yaml- ctype apply -f ./.cloudtype/app.yaml