Skip to content

Commit 050ad91

Browse files
refactor: migrate GitHub token to Doppler (#557)
1 parent 906134a commit 050ad91

2 files changed

Lines changed: 472 additions & 464 deletions

File tree

.github/workflows/deploy.yml

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,12 @@ jobs:
104104
INSTANCE_ID=$(aws ec2 describe-instances --filters "Name=tag:Name,Values=TT-ec2-1" "Name=instance-state-name,Values=running" --query "Reservations[].Instances[].InstanceId" --output text)
105105
echo "INSTANCE_ID=$INSTANCE_ID" >> $GITHUB_ENV
106106
107-
- name: AWS SSM Send-Command (EC2 로컬 토큰 사용 - 노출 방지)
107+
- name: AWS SSM Send-Command (Doppler 완전 통합)
108108
run: |
109109
aws ssm send-command \
110110
--instance-ids "${{ env.INSTANCE_ID }}" \
111111
--document-name "AWS-RunShellScript" \
112-
--comment "Deploy Spring Boot with doppler run (secure)" \
112+
--comment "Deploy with Doppler (all secrets managed centrally)" \
113113
--parameters '{
114114
"commands": [
115115
"#!/bin/bash",
@@ -126,33 +126,31 @@ jobs:
126126
127127
"cd docker/",
128128
129-
"# Doppler token: trailing newline/CRLF 제거해서 안정적으로 주입",
129+
"# Doppler 설정 (파일에서 토큰만 읽기)",
130130
"export DOPPLER_TOKEN=\"$(sudo tr -d \"\\r\\n\" < /etc/tt-secrets/doppler-token)\"",
131131
"export DOPPLER_PROJECT=tt",
132132
"export DOPPLER_CONFIG=prd",
133133
134-
"# GitHub token: ghcr 로그인 후 즉시 폐기(변수는 쉘 종료 시 사라짐)",
135-
"GITHUB_TOKEN=\"$(sudo tr -d \"\\r\\n\" < /etc/tt-secrets/github-token)\"",
136-
"echo \"$GITHUB_TOKEN\" | docker login ghcr.io -u ${{ github.actor }} --password-stdin 2>/dev/null",
137-
"unset GITHUB_TOKEN",
134+
"# GitHub 레지스트리 로그인 (Doppler에서 GITHUB_TOKEN 주입)",
135+
"doppler run --project \"$DOPPLER_PROJECT\" --config \"$DOPPLER_CONFIG\" -- bash -c \"echo \\$GITHUB_TOKEN | docker login ghcr.io -u ${{ github.actor }} --password-stdin 2>/dev/null\"",
138136
139-
"# (권장) doppler secrets를 파일로 남기지 않고, envsubst에만 잠깐 쓰기",
140-
"# alertmanager.yml는 런타임 치환이 필요하므로 doppler run 환경에서 envsubst 실행",
137+
"# Alertmanager 설정 파일 환경변수 치환",
141138
"doppler run --project \"$DOPPLER_PROJECT\" --config \"$DOPPLER_CONFIG\" -- bash -lc \"envsubst < monitoring/alertmanager/alertmanager.yml > /tmp/alertmanager-resolved.yml\"",
142139
"cp /tmp/alertmanager-resolved.yml monitoring/alertmanager/alertmanager.yml",
143140
"rm -f /tmp/alertmanager-resolved.yml",
144141
145-
"# compose 전체를 doppler run으로 감싸서, compose 파싱/컨테이너 실행 모두 동일 env 보장",
142+
"# Docker Compose 실행 (모든 환경변수 Doppler에서 주입)",
146143
"doppler run --project \"$DOPPLER_PROJECT\" --config \"$DOPPLER_CONFIG\" -- docker compose pull",
147144
"doppler run --project \"$DOPPLER_PROJECT\" --config \"$DOPPLER_CONFIG\" -- docker compose up -d --force-recreate",
148145
146+
"# 정리",
149147
"docker image prune -f",
150148
"docker logout ghcr.io 2>/dev/null",
151149
152-
"echo \"Deployment completed at $(date)\"",
150+
"echo \"Deployment completed at $(date)\"",
153151
154-
"# 마지막 상태 조회도 doppler run으로 감싸서 경고(예: SLACK_WEBHOOK_AUTH) 방지",
152+
"# 최종 상태 확인",
155153
"doppler run --project \"$DOPPLER_PROJECT\" --config \"$DOPPLER_CONFIG\" -- docker compose ps"
156154
]
157155
}' \
158-
--region ${{ secrets.AWS_REGION }}
156+
--region ${{ secrets.AWS_REGION }}

0 commit comments

Comments
 (0)