Dpl을 배포 도구로 사용하기
Dpl (D-P-L로 발음됨)은 지속적 배포를 위해 만들어진 배포 도구로, Travis CI에서 개발되고 사용되었지만 GitLab CI/CD에서도 사용할 수 있습니다.
사전 요구 사항
Dpl을 사용하려면 적어도 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 섹션에서 찾을 수 있습니다.
위 예에서는 my-app-staging
을 Heroku 서버에 HEROKU_STAGING_API_KEY
보안 변수에 저장된 API 키로 배포하기 위해 Dpl을 사용합니다.
다른 제공자를 사용하려면 지원되는 제공자 디렉터리을 확인하십시오.
Docker와 함께 Dpl 사용하기
대부분의 경우, GitLab Runner를 구성하여 서버의 셸 명령을 사용합니다.
이는 모든 명령이 로컬 사용자(예: gitlab_runner
또는 gitlab_ci_multi_runner
)의 컨텍스트에서 실행된다는 것을 의미합니다.
또한 Docker 컨테이너에서는 아마도 Ruby 런타임이 설치되어 있지 않을 것입니다.
따라서 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
우리는 다음과 같은 서로 다른 이벤트에 대해 실행되는 두 개의 배포 작업을 만들었습니다.
-
staging
:main
브랜치로 푸시된 모든 커밋에 대해 실행됨 -
production
: 모든 푸시된 태그에 대해 실행됨
또한 두 개의 보안 변수를 사용했습니다.
-
HEROKU_STAGING_API_KEY
: 스테이징 애플리케이션을 배포하는 데 사용되는 Heroku API 키 -
HEROKU_PRODUCTION_API_KEY
: 프로덕션 애플리케이션을 배포하는 데 사용되는 Heroku API 키
API 키 저장
API 키를 안전한 변수로 저장하려면:
- 왼쪽 사이드 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 설정 > CI/CD를 선택합니다.
- 변수를 확장합니다.
프로젝트 설정에 정의된 변수는 빌드 스크립트와 함께 러너에게 전송됩니다.
보안 변수는 리포지터리 외부에 저장됩니다. 비밀을 프로젝트의 .gitlab-ci.yml
파일에 저장하지 마십시오.
또한 secret의 값을 작업 로그에서 숨겨야 합니다.
추가된 변수는 변수 이름 앞에 $
를 붙여서(Windows 러너가 아닌 경우) 또는 %
를 붙여서(Windows Batch 러너인 경우) 액세스할 수 있습니다.
-
$VARIABLE
: Windows 러너가 아닌 경우 사용 -
%VARIABLE%
: Windows Batch 러너의 경우 사용
CI/CD 변수에 대해 더 읽어보세요.