시크릿과 변수
워크스페이스 및 저장소 레벨에서 시크릿과 변수를 등록하고 관리하는 방법
시크릿(Secrets)과 변수(Variables)는 CI/CD 파이프라인에서 민감한 인증 정보나 환경 설정값을 안전하게 관리하기 위한 기능입니다.
시크릿과 변수의 차이
| 구분 | Secrets | Variables |
|---|---|---|
| 용도 | 민감한 인증 정보 | 비밀이 아닌 설정값 |
| 예시 | API 키, 토큰, 비밀번호, SSH 키 | 리전, URL, 배포 환경, 빌드 경로 |
| 로그 노출 | 마스킹 처리 (***) | 그대로 노출 |
| Workflow 참조 | $\{\{ secrets.KEY \}\} | $\{\{ vars.KEY \}\} |
시크릿 등록
워크스페이스 레벨
워크스페이스 레벨 시크릿은 해당 워크스페이스의 모든 저장소에서 사용할 수 있습니다.
워크스페이스 설정 페이지로 이동
좌측 메뉴에서 시크릿 선택
시크릿 추가 클릭
이름과 값을 입력하고 저장
시크릿 값은 저장 후 다시 조회할 수 없습니다. 값을 분실한 경우 새로 등록해야 합니다.
저장소 레벨
저장소 레벨 시크릿은 해당 저장소의 파이프라인에서만 사용할 수 있습니다.
저장소 설정 페이지로 이동
좌측 메뉴에서 시크릿 선택
시크릿 추가 클릭
이름과 값을 입력하고 저장
저장소 레벨 시크릿은 워크스페이스 레벨 시크릿보다 우선합니다. 동일한 이름이 있으면 저장소 레벨 값이 사용됩니다.
자주 사용하는 시크릿
| 시크릿 이름 | 용도 | 설명 |
|---|---|---|
GIT_SSH_PRIVATE_KEY | Git 체크아웃 | SSH 개인 키 (base64 인코딩) |
GCP_SA_KEY | GCP 인증 | 서비스 계정 키 JSON |
AWS_ACCESS_KEY_ID | AWS 인증 | AWS Access Key |
AWS_SECRET_ACCESS_KEY | AWS 인증 | AWS Secret Key |
SLACK_WEBHOOK | 알림 | Slack Incoming Webhook URL |
NPM_TOKEN | 패키지 설치 | npm 레지스트리 인증 토큰 |
변수 등록
워크스페이스 레벨
워크스페이스 설정 페이지로 이동
좌측 메뉴에서 변수 선택
변수 추가 클릭
이름과 값을 입력하고 저장
저장소 레벨
저장소 설정 페이지로 이동
좌측 메뉴에서 변수 선택
변수 추가 클릭
이름과 값을 입력하고 저장
자주 사용하는 변수
| 변수 이름 | 용도 | 예시 값 |
|---|---|---|
DEPLOY_ENV | 배포 환경 | production, staging |
AWS_REGION | AWS 리전 | ap-northeast-2 |
GCP_PROJECT_ID | GCP 저장소 | my-project-123 |
GKE_CLUSTER | GKE 클러스터 이름 | prod-cluster |
SLACK_CHANNEL | 알림 채널 | #deploy-notifications |
네이밍 규칙
대문자와 _를 사용하는 것이 관례입니다.
허용 문자: [A-Z0-9_]
예: API_KEY, DB_PASSWORD, DEPLOY_ENV
시크릿과 변수 이름은 동일한 네임스페이스를 공유하지 않습니다. 같은 이름의 시크릿과 변수를 등록할 수 있지만, 혼동을 피하기 위해 구분된 이름을 사용하는 것을 권장합니다.
우선순위
동일한 이름이 여러 레벨에 등록되어 있을 때의 우선순위:
저장소 레벨 > 워크스페이스 레벨
(최우선) (최하위)Workflow에서 사용
시크릿과 변수를 등록한 후 Workflow YAML에서 다음과 같이 참조합니다.
env:
# 변수 참조
DEPLOY_ENV: "${{ vars.DEPLOY_ENV }}"
REGION: "${{ vars.AWS_REGION }}"
jobs:
deploy:
steps:
- name: deploy
run: ./deploy.sh
env:
# 시크릿 참조
API_KEY: "${{ secrets.API_KEY }}"
DEPLOY_TOKEN: "${{ secrets.DEPLOY_TOKEN }}"자세한 사용법은 CI/CD 환경 변수 문서를 참조하세요.