Skip to content

Commit 74e0264

Browse files
infra: CI/CD, dockerfile 리팩토링
* refactor: ci 수정 * refactor: cd 환경변수 위쪽으로 재배치 * refactor: doppler 설정 리팩토링 * refactor: doppler 설정 리ã팩토링
1 parent 7d50141 commit 74e0264

3 files changed

Lines changed: 57 additions & 52 deletions

File tree

.github/workflows/backend-ci.yml

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -446,35 +446,35 @@ jobs:
446446
echo "skipped=0" >> $GITHUB_OUTPUT
447447
fi
448448
449-
docker-build-and-push:
450-
runs-on: ubuntu-latest
451-
needs: backend-test # 테스트/커버리지 성공 후에만 실행
452-
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
453-
454-
defaults:
455-
run:
456-
working-directory: backend # Dockerfile 있는 곳
457-
458-
steps:
459-
- name: Checkout
460-
uses: actions/checkout@v4
461-
462-
- name: Log in to Docker Hub
463-
uses: docker/login-action@v3
464-
with:
465-
username: ${{ secrets.DOCKERHUB_USERNAME }}
466-
password: ${{ secrets.DOCKERHUB_TOKEN }}
467-
468-
- name: Build and Push Docker Image
469-
run: |
470-
IMAGE_NAME="min7712/waitfair-backend"
471-
472-
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
473-
SHORT_SHA=$(echo ${{ github.sha }} | cut -c1-7)
474-
475-
# backend/ 가 컨텍스트, 그 안의 Dockerfile 사용
476-
docker build -t $IMAGE_NAME:latest \
477-
-t $IMAGE_NAME:${TIMESTAMP}-${SHORT_SHA} .
478-
479-
docker push $IMAGE_NAME:latest
480-
docker push $IMAGE_NAME:${TIMESTAMP}-${SHORT_SHA}
449+
# docker-build-and-push:
450+
# runs-on: ubuntu-latest
451+
# needs: backend-test # 테스트/커버리지 성공 후에만 실행
452+
# if: github.event_name == 'push' && github.ref == 'refs/heads/main'
453+
454+
# defaults:
455+
# run:
456+
# working-directory: backend # Dockerfile 있는 곳
457+
458+
# steps:
459+
# - name: Checkout
460+
# uses: actions/checkout@v4
461+
462+
# - name: Log in to Docker Hub
463+
# uses: docker/login-action@v3
464+
# with:
465+
# username: ${{ secrets.DOCKERHUB_USERNAME }}
466+
# password: ${{ secrets.DOCKERHUB_TOKEN }}
467+
468+
# - name: Build and Push Docker Image
469+
# run: |
470+
# IMAGE_NAME="min7712/waitfair-backend"
471+
472+
# TIMESTAMP=$(date +%Y%m%d-%H%M%S)
473+
# SHORT_SHA=$(echo ${{ github.sha }} | cut -c1-7)
474+
475+
# # backend/ 가 컨텍스트, 그 안의 Dockerfile 사용
476+
# docker build -t $IMAGE_NAME:latest \
477+
# -t $IMAGE_NAME:${TIMESTAMP}-${SHORT_SHA} .
478+
479+
# docker push $IMAGE_NAME:latest
480+
# docker push $IMAGE_NAME:${TIMESTAMP}-${SHORT_SHA}

.github/workflows/deploy.yml

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
name: deploy
22
env:
33
IMAGE_NAME: waitfair
4+
REGISTRY: ghcr.io
5+
AWS_REGION: ${{ secrets.AWS_REGION }}
6+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
7+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
8+
PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
9+
DOPPLER_TOKEN: ${{ secrets.DOPPLER_TOKEN }}
410

511
on:
612
push:
@@ -28,12 +34,12 @@ jobs:
2834
id: create_tag
2935
uses: mathieudutour/github-tag-action@v6.2
3036
with:
31-
github_token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
37+
github_token: ${{ env.PERSONAL_ACCESS_TOKEN }}
3238
- name: Create Release
3339
id: create_release
3440
uses: actions/create-release@v1
3541
env:
36-
GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
42+
GITHUB_TOKEN: ${{ env.PERSONAL_ACCESS_TOKEN }}
3743
with:
3844
tag_name: ${{ steps.create_tag.outputs.new_tag }}
3945
release_name: Release ${{ steps.create_tag.outputs.new_tag }}
@@ -60,9 +66,9 @@ jobs:
6066
- name: 레지스트리 로그인
6167
uses: docker/login-action@v2
6268
with:
63-
registry: ghcr.io
69+
registry: ${{ env.REGISTRY }}
6470
username: ${{ github.actor }}
65-
password: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
71+
password: ${{ env.PERSONAL_ACCESS_TOKEN }}
6672

6773
- name: set lower case owner name
6874
id: export_owner
@@ -79,8 +85,6 @@ jobs:
7985
with:
8086
context: ./backend
8187
push: true
82-
build-args: |
83-
DOPPLER_TOKEN=${{ secrets.DOPPLER_TOKEN }}
8488
cache-from: type=registry,ref=ghcr.io/${{ steps.export_owner.outputs.owner_lc }}/${{ steps.export_image.outputs.image_name }}:cache
8589
cache-to: type=registry,ref=ghcr.io/${{ steps.export_owner.outputs.owner_lc }}/${{ steps.export_image.outputs.image_name }}:cache,mode=max
8690
tags: |
@@ -94,9 +98,9 @@ jobs:
9498
steps:
9599
- uses: aws-actions/configure-aws-credentials@v4
96100
with:
97-
aws-region: ${{ secrets.AWS_REGION }}
98-
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
99-
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
101+
aws-region: ${{ env.AWS_REGION }}
102+
aws-access-key-id: ${{ env.AWS_ACCESS_KEY_ID }}
103+
aws-secret-access-key: ${{ env.AWS_SECRET_ACCESS_KEY }}
100104

101105
- name: 인스턴스 ID 가져오기
102106
id: get_instance_id
@@ -109,9 +113,9 @@ jobs:
109113
uses: peterkimzz/aws-ssm-send-command@master
110114
id: ssm
111115
with:
112-
aws-region: ${{ secrets.AWS_REGION }}
113-
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
114-
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
116+
aws-region: ${{ env.AWS_REGION }}
117+
aws-access-key-id: ${{ env.AWS_ACCESS_KEY_ID }}
118+
aws-secret-access-key: ${{ env.AWS_SECRET_ACCESS_KEY }}
115119
instance-ids: ${{ env.INSTANCE_ID }}
116120
working-directory: /
117121
comment: Deploy
@@ -135,7 +139,7 @@ jobs:
135139
docker run -d \
136140
--name $STANDBY \
137141
--network common \
138-
-e DOPPLER_TOKEN=${{ secrets.DOPPLER_TOKEN }} \
142+
-e DOPPLER_TOKEN=${{ env.DOPPLER_TOKEN }} \
139143
$IMAGE
140144
141145
# Health Check

backend/Dockerfile

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,17 @@ RUN ./gradlew bootJar --no-daemon -x test
2121
FROM eclipse-temurin:21-jre
2222
WORKDIR /app
2323

24-
# Doppler CLI 설치
25-
RUN apt-get update && apt-get install -y apt-transport-https ca-certificates curl gnupg && \
24+
# Doppler CLI 설치 & 캐시 정리
25+
RUN apt-get update && \
26+
apt-get install -y apt-transport-https ca-certificates curl gnupg && \
2627
curl -sLf --retry 3 --tlsv1.2 --proto "=https" 'https://packages.doppler.com/public/cli/gpg.DE2A7741A397C129.key' | gpg --dearmor -o /usr/share/keyrings/doppler-archive-keyring.gpg && \
2728
echo "deb [signed-by=/usr/share/keyrings/doppler-archive-keyring.gpg] https://packages.doppler.com/public/cli/deb/debian any-version main" | tee /etc/apt/sources.list.d/doppler-cli.list && \
2829
apt-get update && \
29-
apt-get -y install doppler
30+
apt-get -y install doppler && \
31+
apt-get clean && \
32+
rm -rf /var/lib/apt/lists/*
3033

31-
# Build argument로 Doppler 토큰 받기
32-
ARG DOPPLER_TOKEN
33-
ENV DOPPLER_TOKEN=$DOPPLER_TOKEN
34+
# Build argument로 프로젝트 환경 설정
3435
ENV DOPPLER_PROJECT=waitfair
3536
ENV DOPPLER_CONFIG=prd
3637

@@ -39,4 +40,4 @@ COPY --from=builder /app/build/libs/*.jar app.jar
3940

4041
EXPOSE 8080
4142

42-
ENTRYPOINT ["/bin/sh", "-c", "doppler secrets download --project waitfair --config prd --format env --no-file > /tmp/.env && set -a && . /tmp/.env && exec java -Duser.timezone=Asia/Seoul -jar -Dspring.profiles.active=prod app.jar"]
43+
ENTRYPOINT ["doppler", "run", "--", "java", "-Duser.timezone=Asia/Seoul", "-jar", "app.jar", "--spring.profiles.active=prod"]

0 commit comments

Comments
 (0)