Dpl을 배포 도구로 사용하기
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
Dpl (D-P-L이라고 발음)은 지속적 배포를 위해 만들어진 배포 도구로, Travis CI에서 개발하고 사용하지만 GitLab CI/CD에서도 사용할 수 있습니다. Dpl은 지원되는 공급자 중 어디에도 배포하는 데 사용할 수 있습니다.
Dpl (D-P-L이라고 발음)은 지속적 배포를 위해 만들어진 배포 도구로, Travis CI에서 개발하고 사용하지만 GitLab CI/CD에서도 사용할 수 있습니다.
Dpl은 지원되는 공급자 중 어디에도 배포하는 데 사용할 수 있습니다.
사전 요구 사항#
Dpl을 사용하려면 gem을 설치할 수 있는 Ruby 1.9.3 이상이 필요합니다.
기본 사용법#
Dpl은 다음 명령으로 모든 머신에 설치할 수 있습니다:
gem install dpl
이를 통해 CI 서버에서 테스트하는 대신 로컬 터미널에서 모든 명령을 테스트할 수 있습니다.
Ruby가 설치되어 있지 않은 경우 Debian 호환 Linux에서 다음과 같이 설치할 수 있습니다:
apt-get update
apt-get install ruby-dev
Dpl은 Heroku, Cloud Foundry, AWS/S3 등 다양한 서비스를 지원합니다. 사용하려면 공급자와 공급자에서 요구하는 추가 매개변수를 정의합니다.
예를 들어 Heroku에 애플리케이션을 배포하려면 heroku를 공급자로 지정하고 api_key와 app을 지정해야 합니다.
가능한 모든 매개변수는 Heroku API 섹션에서 확인할 수 있습니다.
staging:
stage: deploy
script:
- gem install dpl
- dpl heroku api --app=my-app-staging --api_key=$HEROKU_STAGING_API_KEY
environment: staging
이전 예시에서는 HEROKU_STAGING_API_KEY 보안 변수에 저장된 API 키를 사용하여 Dpl로 my-app-staging을 Heroku 서버에 배포했습니다.
다른 공급자를 사용하려면 지원되는 공급자의 긴 목록을 살펴보세요.
Docker에서 Dpl 사용#
대부분의 경우 서버의 셸 명령을 사용하도록 GitLab Runner를 구성합니다.
즉, 모든 명령이 로컬 사용자(예: gitlab_runner 또는 gitlab_ci_multi_runner) 컨텍스트에서 실행됩니다.
또한 Docker 컨테이너에 Ruby 런타임이 설치되어 있지 않을 가능성이 높습니다.
반드시 설치해야 합니다:
staging:
stage: deploy
script:
- apt-get update -yq
- apt-get install -y ruby-dev
- gem install dpl
- dpl heroku api --app=my-app-staging --api_key=$HEROKU_STAGING_API_KEY
rules:
- if: $CI_COMMIT_BRANCH == "main"
environment: staging
첫 번째 줄 apt-get update -yq는 사용 가능한 패키지 목록을 업데이트하고,
두 번째 apt-get install -y ruby-dev는 시스템에 Ruby 런타임을 설치합니다.
이전 예시는 모든 Debian 호환 시스템에 유효합니다.
스테이징 및 프로덕션에서 사용#
개발 워크플로우에서 스테이징(개발)과 프로덕션 환경을 갖추는 것은 매우 일반적입니다.
다음 예시를 고려해 보세요: main 브랜치를 staging에 배포하고 모든 태그를 production 환경에 배포하려고 합니다.
이 설정에 대한 최종 .gitlab-ci.yml은 다음과 같습니다:
staging:
stage: deploy
script:
- gem install dpl
- dpl heroku api --app=my-app-staging --api_key=$HEROKU_STAGING_API_KEY
rules:
- if: $CI_COMMIT_BRANCH == "main"
environment: staging
production:
stage: deploy
script:
- gem install dpl
- dpl heroku api --app=my-app-production --api_key=$HEROKU_PRODUCTION_API_KEY
rules:
- if: $CI_COMMIT_TAG
environment: production
다른 이벤트에서 실행되는 두 개의 배포 job을 만들었습니다:
staging:main브랜치에 푸시된 모든 커밋에 대해 실행production: 푸시된 모든 태그에 대해 실행
이 job들은 또한 두 개의 보안 변수를 사용합니다:
HEROKU_STAGING_API_KEY: 스테이징 앱을 배포하는 데 사용되는 Heroku API 키HEROKU_PRODUCTION_API_KEY: 프로덕션 앱을 배포하는 데 사용되는 Heroku API 키
API 키 저장#
API 키를 보안 변수로 저장하려면:
- 상단 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Settings > CI/CD를 선택합니다.
- Variables를 펼칩니다.
프로젝트 설정에서 정의된 변수는 빌드 스크립트와 함께 러너로 전송됩니다.
보안 변수는 리포지터리 외부에 저장됩니다. 프로젝트의 .gitlab-ci.yml 파일에 시크릿을 절대 저장하지 마세요. 또한 시크릿 값이 job 로그에서 숨겨지도록 하는 것도 중요합니다.
추가된 변수는 이름 앞에 $(Windows 이외의 러너의 경우) 또는 %(Windows Batch 러너의 경우)를 붙여 액세스합니다:
$VARIABLE: Windows 이외의 러너에 사용%VARIABLE%: Windows Batch 러너에 사용
CI/CD 변수에 대해 자세히 알아보세요.
