Skip to content

Commit af6966f

Browse files
committed
refactor: 테스트용 secrets 임시 디렉토리 생성 후 삭제하도록 수정
1 parent 5f2d8ca commit af6966f

File tree

1 file changed

+37
-22
lines changed

1 file changed

+37
-22
lines changed

.github/workflows/test-server-ci.yml

Lines changed: 37 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# 워크플로우 이름
22
name: Spring CI/CD Pipeline (Develop)
33

4-
# develop 브랜치 PR에서만 실행
54
on:
65
pull_request:
76
branches:
@@ -15,41 +14,32 @@ on:
1514
- '.github/workflows/**'
1615

1716
jobs:
18-
# ==================================
19-
# CI: Test and Build and Push Docker Image
20-
# ==================================
2117
ci:
2218
runs-on: ubuntu-latest
2319
env:
2420
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
2521

26-
27-
# CI 작업이 실행되는 동안 RabbitMQ 서비스 컨테이너를 함께 실행
2822
services:
2923
rabbitmq:
3024
image: rabbitmq:3-management
3125
ports:
3226
- 5672:5672
33-
# RabbitMQ가 완전히 준비될 때까지 기다리는 상태 확인 옵션
3427
options: >-
3528
--health-cmd "rabbitmq-diagnostics check_running"
3629
--health-interval 10s
3730
--health-timeout 5s
3831
--health-retries 5
3932
4033
steps:
41-
# 1. 소스 코드 체크아웃
4234
- name: Checkout source code
4335
uses: actions/checkout@v4
4436

45-
# 2. JDK 21 설치
4637
- name: Set up JDK 21
4738
uses: actions/setup-java@v4
4839
with:
4940
java-version: '21'
5041
distribution: 'temurin'
5142

52-
# 3. Gradle 캐시 설정
5343
- name: Cache Gradle packages
5444
uses: actions/cache@v4
5545
with:
@@ -60,21 +50,43 @@ jobs:
6050
restore-keys: |
6151
${{ runner.os }}-gradle-
6252
63-
# 4. gradlew 실행 권한 부여
6453
- name: Grant execute permission for gradlew
6554
run: chmod +x ./gradlew
6655

67-
# 5. Gradle 테스트 실행
56+
# ----------------------------------
57+
# 1. 테스트용 임시 디렉토리 생성 + secrets yml 생성
58+
# ----------------------------------
59+
- name: Create temp directory for secrets
60+
run: |
61+
TMP_DIR=$(mktemp -d)
62+
# application-secrets.yml
63+
echo "${{ secrets.APPLICATION_SECRET_YML }}" > $TMP_DIR/application-secrets.yml
64+
echo "OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}" >> $TMP_DIR/application-secrets.yml
65+
echo "spring.cloud.aws.region.static: ${{ secrets.AWS_REGION }}" >> $TMP_DIR/application-secrets.yml
66+
echo "spring.cloud.aws.credentials.access-key: ${{ secrets.AWS_ACCESS_KEY_ID }}" >> $TMP_DIR/application-secrets.yml
67+
echo "spring.cloud.aws.credentials.secret-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}" >> $TMP_DIR/application-secrets.yml
68+
echo "spring.cloud.aws.s3.bucket: ${{ secrets.AWS_S3_BUCKET_NAME }}" >> $TMP_DIR/application-secrets.yml
69+
echo "spring.cloud.aws.stack.auto: false" >> $TMP_DIR/application-secrets.yml
70+
echo "liveblocks.secret-key: ${{ secrets.LIVEBLOCKS_SECRET_KEY }}" >> $TMP_DIR/application-secrets.yml
71+
# application-secrets-server.yml
72+
echo "${{ secrets.APPLICATION_SECRET_SERVER_YML }}" > $TMP_DIR/application-secrets-server.yml
73+
echo "OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}" >> $TMP_DIR/application-secrets-server.yml
74+
echo "TMP_DIR=$TMP_DIR" >> $GITHUB_ENV
75+
76+
# ----------------------------------
77+
# 2. Gradle 테스트 실행
78+
# ----------------------------------
6879
- name: Test with Gradle
69-
# 테스트 단계에서 RabbitMQ 연결을 위한 환경 변수 설정
7080
env:
7181
SPRING_RABBITMQ_HOST: localhost
7282
SPRING_RABBITMQ_PORT: 5672
7383
SPRING_RABBITMQ_USERNAME: guest
7484
SPRING_RABBITMQ_PASSWORD: guest
75-
run: ./gradlew test
85+
run: ./gradlew test -Dspring.config.additional-location=${TMP_DIR}/
7686

77-
# 6. 테스트 결과 요약 출력
87+
# ----------------------------------
88+
# 3. 테스트 결과 요약
89+
# ----------------------------------
7890
- name: Show test results
7991
run: |
8092
echo "==== Test Results ===="
@@ -91,26 +103,29 @@ jobs:
91103
echo "No test results found."
92104
fi
93105
94-
# 7. Gradle 빌드 실행 (테스트 성공 시)
106+
# ----------------------------------
107+
# 4. 테스트용 secrets 임시 디렉토리 삭제
108+
# ----------------------------------
109+
- name: Remove temp secrets directory
110+
run: rm -rf ${TMP_DIR}
111+
112+
# ----------------------------------
113+
# 5. Gradle 빌드 (테스트 제외)
114+
# ----------------------------------
95115
- name: Build with Gradle
96116
run: ./gradlew build -x test
97117

98-
# 8. GHCR 로그인
99118
- name: Log in to GHCR
100119
uses: docker/login-action@v2
101120
with:
102121
registry: ghcr.io
103122
username: ${{ github.repository_owner }}
104123
password: ${{ secrets.GITHUB_TOKEN }}
105124

106-
# 9. Docker 이미지 빌드 & 푸시
107125
- name: Build & Push Docker Image
108126
run: |
109127
IMAGE_NAME=ghcr.io/${{ github.repository }}/zoopzoop
110-
111-
docker build -t $IMAGE_NAME:${GITHUB_SHA} .
128+
docker build -t $IMAGE_NAME:${GITHUB_SHA} .
112129
docker tag $IMAGE_NAME:${GITHUB_SHA} $IMAGE_NAME:latest
113-
114130
docker push $IMAGE_NAME:${GITHUB_SHA}
115131
docker push $IMAGE_NAME:latest
116-

0 commit comments

Comments
 (0)