Skip to content

Commit 50f0b9c

Browse files
authored
Update gradle.yml
1 parent a7a15a7 commit 50f0b9c

File tree

1 file changed

+33
-90
lines changed

1 file changed

+33
-90
lines changed

.github/workflows/gradle.yml

Lines changed: 33 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -1,132 +1,75 @@
1-
name: CI/CD with Gradle, Docker Image & Docker Compose
1+
name: Deploy with Docker Compose
22

33
on:
44
push:
55
branches: [ "main" ]
6-
pull_request:
7-
branches: [ "main" ]
8-
9-
permissions:
10-
contents: read
11-
12-
env:
13-
# Docker Compose가 root 권한 필요할 수도 있어서 sudo 붙입니다.
14-
DOCKER_COMPOSE_CMD: "sudo docker compose"
156

167
jobs:
17-
build-and-push-image:
18-
name: Build & Push Docker Image
8+
deploy:
199
runs-on: ubuntu-latest
10+
2011
steps:
21-
# 1) Repository Checkout
12+
# 1. 레포지토리 체크아웃
2213
- name: Checkout repository
2314
uses: actions/checkout@v3
2415

25-
# 2) JDK 17 설치
26-
- name: Set up JDK 17
27-
uses: actions/setup-java@v3
28-
with:
29-
java-version: '17'
30-
distribution: 'temurin'
31-
32-
# 3) Gradle 권한 부여
33-
- name: Grant execute permission for Gradle
34-
run: chmod +x ./gradlew
35-
36-
# 4) Gradle 빌드 (bootJar 생성)
37-
- name: Build with Gradle
38-
run: ./gradlew clean bootJar
39-
40-
# 5) Docker 이미지 빌드
41-
- name: Build Docker Image
42-
run: docker build -t ${{ secrets.DOCKER_USERNAME }}/fossistant:latest .
43-
44-
# 6) Docker Hub 로그인
45-
- name: Docker Hub Login
46-
uses: docker/login-action@v2
47-
with:
48-
username: ${{ secrets.DOCKER_USERNAME }}
49-
password: ${{ secrets.DOCKER_PASSWORD }}
50-
51-
# 7) Docker 이미지 Push
52-
- name: Push Docker Image to Docker Hub
53-
run: docker push ${{ secrets.DOCKER_USERNAME }}/fossistant:latest
54-
55-
deploy-with-compose:
56-
name: Deploy to Azure VM via Docker Compose
57-
runs-on: ubuntu-latest
58-
needs: build-and-push-image
59-
60-
steps:
61-
# 1) SSH 키 세팅
62-
- name: Setup SSH private key
16+
# 2. SSH 키 설정
17+
- name: Set up SSH private key
6318
run: |
6419
echo "${{ secrets.SSH_KEY }}" > private_key.pem
6520
chmod 600 private_key.pem
6621
67-
# 2) SSH 접속 테스트 (디버그)
68-
- name: Debug SSH connection
69-
run: |
70-
ssh -o StrictHostKeyChecking=no -i private_key.pem \
71-
${{ secrets.AZURE_VM_USER }}@${{ secrets.AZURE_VM_HOST }} "echo ✅ SSH 접속 성공!"
72-
73-
# 3) .env 파일 생성 (GitHub Secrets → .env)
22+
# 3. .env 파일 생성
7423
- name: Generate .env for Docker Compose
7524
run: |
76-
cat <<EOF > .env
77-
AZURE_DB_USERNAME=${{ secrets.AZURE_DB_USERNAME }}
78-
AZURE_DB_PASSWORD=${{ secrets.AZURE_DB_PASSWORD }}
79-
GEMINI_KEY=${{ secrets.GEMINI_KEY }}
80-
GITHUB_TOKEN=${{ secrets.HUB_TOKEN }}
81-
JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }}
82-
JWT_ACCESS_TOKEN_TIME=${{ secrets.JWT_ACCESS_TOKEN_TIME }}
83-
JWT_REFRESH_TOKEN_TIME=${{ secrets.JWT_REFRESH_TOKEN_TIME }}
84-
GITHUB_CLIENT_ID=${{ secrets.GITHUB_CLIENT_ID }}
85-
GITHUB_CLIENT_SECRET=${{ secrets.GITHUB_CLIENT_SECRET }}
86-
EOF
87-
88-
# 4) docker-compose.yml 업로드
25+
echo "AZURE_DB_USERNAME=${{ secrets.AZURE_DB_USERNAME }}" >> .env
26+
echo "AZURE_DB_PASSWORD=${{ secrets.AZURE_DB_PASSWORD }}" >> .env
27+
echo "GEMINI_KEY=${{ secrets.GEMINI_KEY }}" >> .env
28+
echo "GITHUB_TOKEN=${{ secrets.HUB_TOKEN }}" >> .env
29+
echo "JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }}" >> .env
30+
echo "JWT_ACCESS_TOKEN_TIME=${{ secrets.JWT_ACCESS_TOKEN_TIME }}" >> .env
31+
echo "JWT_REFRESH_TOKEN_TIME=${{ secrets.JWT_REFRESH_TOKEN_TIME }}" >> .env
32+
echo "GITHUB_CLIENT_ID=${{ secrets.CLIENT_ID }}" >> .env
33+
echo "GITHUB_CLIENT_SECRET=${{ secrets.CLIENT_SECRET }}" >> .env
34+
35+
# 4. docker-compose.yml 업로드
8936
- name: Upload docker-compose.yml to Azure VM
9037
run: |
91-
scp -i private_key.pem -o StrictHostKeyChecking=no \
92-
docker-compose.yml \
38+
scp -i private_key.pem -o StrictHostKeyChecking=no docker-compose.yml \
9339
${{ secrets.AZURE_VM_USER }}@${{ secrets.AZURE_VM_HOST }}:/home/ubuntu/fossistant/docker-compose.yml
9440
95-
# 5) .env 업로드
41+
# 5. .env 업로드
9642
- name: Upload .env to Azure VM
9743
run: |
98-
scp -i private_key.pem -o StrictHostKeyChecking=no \
99-
.env \
44+
scp -i private_key.pem -o StrictHostKeyChecking=no .env \
10045
${{ secrets.AZURE_VM_USER }}@${{ secrets.AZURE_VM_HOST }}:/home/ubuntu/fossistant/.env
10146
102-
# 6) SSH로 접속하여 배포 (포트 충돌 및 컨테이너 정리 포함)
103-
- name: SSH to Azure VM and Deploy with Compose
47+
# 6. SSH로 접속하여 배포
48+
- name: SSH to Azure VM and Deploy
10449
uses: appleboy/[email protected]
10550
with:
10651
host: ${{ secrets.AZURE_VM_HOST }}
10752
username: ${{ secrets.AZURE_VM_USER }}
10853
key: ${{ secrets.SSH_KEY }}
10954
port: 22
11055
script: |
111-
set -eux
112-
11356
cd /home/ubuntu/fossistant
11457
11558
echo "🧼 Killing any process listening on port 6379..."
59+
# (선택 사항) Redis가 사용 중인 포트를 잡고 있는 프로세스 강제 종료
11660
sudo fuser -k 6379/tcp || true
11761
118-
echo "🧼 Forcibly removing any existing containers named 'redis' or 'fossistant'..."
62+
echo "🧼 Forcibly removing existing containers (redis, fossistant) if they exist..."
11963
docker rm -f redis fossistant || true
12064
121-
echo "🧹 Stopping containers defined by docker-compose and removing orphans..."
122-
$DOCKER_COMPOSE_CMD down --remove-orphans || true
123-
$DOCKER_COMPOSE_CMD rm -f || true
65+
echo "🧹 Stopping old containers and removing orphans..."
66+
docker compose down --remove-orphans || true
67+
docker compose rm -f || true
12468
125-
echo "✅ Pulling latest images from Docker Hub..."
126-
$DOCKER_COMPOSE_CMD pull
69+
echo "✅ Pulling latest images..."
70+
docker compose pull
12771
128-
echo "🚀 Starting new containers with Docker Compose..."
129-
$DOCKER_COMPOSE_CMD up -d --build
72+
echo "🚀 Starting new containers..."
73+
docker compose up -d --build
13074
131-
echo "🎉 Deployment complete! Current containers:"
132-
docker ps
75+
echo "🎉 Deployment complete! Containers are up and running."

0 commit comments

Comments
 (0)