Skip to content

Commit da1f4e4

Browse files
committed
fix:들여쓰기 문제인가
1 parent ee27e8a commit da1f4e4

File tree

1 file changed

+35
-81
lines changed

1 file changed

+35
-81
lines changed

.github/workflows/deploy.yml

Lines changed: 35 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,59 @@
11
name: Deploy to EC2
22

3-
# =========================
4-
# 전역 환경변수
5-
# =========================
63
env:
7-
IMAGE_REPOSITORY: fivelogic # GHCR 이미지 리포지토리명
8-
CONTAINER_NAME: spring-boot # 컨테이너 이름
9-
EC2_INSTANCE_TAG_NAME: devcos-team10-main # 배포 대상 EC2 Name 태그
10-
DOCKER_NETWORK: app-network # 도커 네트워크
11-
BACKEND_DIR: back # Dockerfile 위치 (프로젝트 루트)
4+
IMAGE_REPOSITORY: fivelogic
5+
CONTAINER_NAME: spring-boot
6+
EC2_INSTANCE_TAG_NAME: devcos-team10-main
7+
DOCKER_NETWORK: app-network
8+
BACKEND_DIR: back
129

1310
on:
1411
push:
15-
paths:
16-
- ".github/workflows/**"
17-
- "back/src/**"
18-
- "back/build.gradle.kts"
19-
- "back/settings.gradle.kts"
20-
- "back/Dockerfile"
2112
branches:
2213
- main
2314
- chore/107
2415
pull_request:
2516
branches:
2617
- main
2718
- develop
19+
workflow_dispatch:
2820

29-
# 권한 최소화/명시화
3021
permissions:
31-
contents: write # 태그/릴리즈
32-
packages: write # GHCR 푸시
22+
contents: write
23+
packages: write
3324

34-
# 기본 셸
3525
defaults:
3626
run:
3727
shell: bash
3828

3929
jobs:
40-
# ---------------------------------------------------------
41-
# 1) 테스트
42-
# ---------------------------------------------------------
43-
test:
44-
runs-on: ubuntu-latest
45-
46-
steps:
47-
- name: 코드 체크아웃
48-
uses: actions/checkout@v4
49-
50-
- name: Java 21 설정
51-
uses: actions/setup-java@v4
52-
with:
53-
distribution: 'temurin'
54-
java-version: '21'
55-
cache: 'gradle'
56-
57-
- name: 테스트 실행
58-
run: |
59-
cd back
60-
chmod +x gradlew
61-
./gradlew test
62-
63-
- name: 테스트 결과 업로드
64-
if: always()
65-
uses: actions/upload-artifact@v4
66-
with:
67-
name: test-results
68-
path: back/build/reports/tests/test/
69-
70-
# ---------------------------------------------------------
71-
# 2) 태그/릴리즈 생성 (main 브랜치만)
72-
# ---------------------------------------------------------
30+
test:
31+
runs-on: ubuntu-latest
32+
33+
steps:
34+
- name: 코드 체크아웃
35+
uses: actions/checkout@v4
36+
37+
- name: Java 21 설정
38+
uses: actions/setup-java@v4
39+
with:
40+
distribution: 'temurin'
41+
java-version: '21'
42+
cache: 'gradle'
43+
44+
- name: 테스트 실행
45+
run: |
46+
cd back
47+
chmod +x gradlew
48+
./gradlew test
49+
50+
- name: 테스트 결과 업로드
51+
if: always()
52+
uses: actions/upload-artifact@v4
53+
with:
54+
name: test-results
55+
path: back/build/reports/tests/test/
56+
7357
makeTagAndRelease:
7458
needs: test
7559
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
@@ -81,14 +65,12 @@ test:
8165
- name: 코드 체크아웃
8266
uses: actions/checkout@v4
8367

84-
# 버전 태그 자동 생성 (vX.Y.Z)
8568
- name: Create Tag
8669
id: create_tag
8770
uses: mathieudutour/[email protected]
8871
with:
8972
github_token: ${{ secrets.GITHUB_TOKEN }}
9073

91-
# 릴리즈 생성
9274
- name: Create Release
9375
uses: actions/create-release@v1
9476
env:
@@ -100,9 +82,6 @@ test:
10082
draft: false
10183
prerelease: false
10284

103-
# ---------------------------------------------------------
104-
# 3) 도커 이미지 빌드/푸시
105-
# ---------------------------------------------------------
10685
buildImageAndPush:
10786
name: 도커 이미지 빌드와 푸시
10887
needs: makeTagAndRelease
@@ -112,7 +91,6 @@ test:
11291
- name: 코드 체크아웃
11392
uses: actions/checkout@v4
11493

115-
11694
- name: .env 파일 생성
11795
env:
11896
DOT_ENV: ${{ secrets.DOT_ENV }}
@@ -123,22 +101,19 @@ test:
123101
- name: Docker Buildx 설치
124102
uses: docker/setup-buildx-action@v3
125103

126-
# GHCR 로그인
127104
- name: 레지스트리 로그인
128105
uses: docker/login-action@v3
129106
with:
130107
registry: ghcr.io
131108
username: ${{ github.actor }}
132109
password: ${{ secrets.GITHUB_TOKEN }}
133110

134-
# 저장소 소유자명을 소문자로 (GHCR 경로 표준화)
135111
- name: set lower case owner name
136112
run: |
137113
echo "OWNER_LC=${OWNER,,}" >> "${GITHUB_ENV}"
138114
env:
139115
OWNER: "${{ github.repository_owner }}"
140116

141-
# 캐시를 최대한 활용하여 빌드 → 버전태그 및 latest 동시 푸시
142117
- name: 빌드 앤 푸시
143118
uses: docker/build-push-action@v6
144119
with:
@@ -150,26 +125,20 @@ test:
150125
ghcr.io/${{ env.OWNER_LC }}/${{ env.IMAGE_REPOSITORY }}:${{ needs.makeTagAndRelease.outputs.tag_name }}
151126
ghcr.io/${{ env.OWNER_LC }}/${{ env.IMAGE_REPOSITORY }}:latest
152127
153-
# ---------------------------------------------------------
154-
# 4) 배포
155-
# ---------------------------------------------------------
156128
deploy:
157129
name: 배포
158130
needs: [makeTagAndRelease, buildImageAndPush]
159131
runs-on: ubuntu-latest
160132

161133
steps:
162-
# AWS 자격 구성
163134
- name: AWS 자격 구성
164135
uses: aws-actions/configure-aws-credentials@v4
165136
with:
166137
aws-region: ${{ secrets.AWS_REGION }}
167138
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
168139
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
169140

170-
# Name 태그로 EC2 인스턴스 조회
171141
- name: 인스턴스 ID 가져오기
172-
id: get_instance_id
173142
run: |
174143
INSTANCE_ID=$(aws ec2 describe-instances \
175144
--filters "Name=tag:Name,Values=${{ env.EC2_INSTANCE_TAG_NAME }}" "Name=instance-state-name,Values=running" \
@@ -183,7 +152,6 @@ test:
183152
echo "✅ EC2 인스턴스 발견: ${INSTANCE_ID}"
184153
echo "INSTANCE_ID=${INSTANCE_ID}" >> "${GITHUB_ENV}"
185154
186-
# SSM으로 배포 수행
187155
- name: AWS SSM Send-Command로 배포
188156
uses: peterkimzz/aws-ssm-send-command@master
189157
with:
@@ -196,49 +164,38 @@ test:
196164
command: |
197165
set -Eeuo pipefail
198166
199-
# 로그 파일 설정
200167
LOG="/tmp/deploy-$(date +%Y%m%d_%H%M%S).log"
201168
exec > >(awk '{ fflush(); print strftime("[%Y-%m-%d %H:%M:%S]"), $0 }' | tee -a "$LOG")
202169
exec 2> >(awk '{ fflush(); print strftime("[%Y-%m-%d %H:%M:%S]"), $0 }' | tee -a "$LOG" >&2)
203170
204171
echo "🚀 배포 시작..."
205172
206-
# 환경변수 로드
207173
source /etc/environment || true
208174
209-
# 이미지 정보 설정
210175
OWNER_LC="${{ github.repository_owner }}"
211176
OWNER_LC="${OWNER_LC,,}"
212177
IMAGE_TAG='${{ needs.makeTagAndRelease.outputs.tag_name }}'
213178
IMAGE_REPOSITORY='${{ env.IMAGE_REPOSITORY }}'
214179
IMAGE="ghcr.io/${OWNER_LC}/${IMAGE_REPOSITORY}:${IMAGE_TAG}"
215180
CONTAINER_NAME="${{ env.CONTAINER_NAME }}"
216-
NET="${{ env.DOCKER_NETWORK }}"
217181
218182
echo "📦 이미지: ${IMAGE}"
219183
echo "📦 컨테이너: ${CONTAINER_NAME}"
220184
221-
# 프로젝트 디렉토리로 이동
222185
cd ~/WEB6_8_FiveLogic_BE || exit 1
223186
224-
225-
# 최신 이미지 pull
226187
echo "📥 Docker 이미지 다운로드 중..."
227188
docker pull $IMAGE
228189
229-
# 기존 컨테이너 중지 및 삭제
230190
echo "🛑 기존 컨테이너 중지 중..."
231191
docker-compose stop $CONTAINER_NAME || true
232192
docker-compose rm -f $CONTAINER_NAME || true
233193
234-
# docker-compose.yml 이미지 업데이트
235194
sed -i "s|image:.*${IMAGE_REPOSITORY}.*|image: ${IMAGE}|g" docker-compose.yml
236195
237-
# 새 컨테이너 시작
238196
echo "🚀 새 컨테이너 시작 중..."
239197
docker-compose up -d $CONTAINER_NAME
240198
241-
# 헬스체크
242199
echo "🏥 헬스체크 중..."
243200
for i in {1..30}; do
244201
if docker exec $CONTAINER_NAME curl -f http://localhost:8080/health > /dev/null 2>&1; then
@@ -249,15 +206,12 @@ test:
249206
sleep 2
250207
done
251208
252-
# 컨테이너 상태 확인
253209
echo "📊 컨테이너 상태:"
254210
docker-compose ps $CONTAINER_NAME
255211
256-
# 최근 로그 출력
257212
echo "📋 최근 로그:"
258213
docker-compose logs --tail=50 $CONTAINER_NAME
259214
260-
# 오래된 이미지 정리
261215
echo "🧹 오래된 이미지 정리 중..."
262216
{
263217
docker images --format '{{.Repository}}:{{.Tag}}' \

0 commit comments

Comments
 (0)