Skip to content

Commit 9b63270

Browse files
authored
Update deploy.yml
1 parent ed0b690 commit 9b63270

File tree

1 file changed

+51
-107
lines changed

1 file changed

+51
-107
lines changed

.github/workflows/deploy.yml

Lines changed: 51 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ on:
1616
- dev
1717

1818
jobs:
19-
build:
19+
build-and-push:
2020
runs-on: ubuntu-latest
2121

2222
steps:
@@ -32,70 +32,25 @@ jobs:
3232
- name: Grant execute permission for gradlew
3333
run: chmod +x ./gradlew
3434

35-
- name: Set environment variables
35+
- name: Build Docker Image
3636
run: |
37-
echo "EMAIL_USERNAME=${{ secrets.EMAIL_USERNAME }}" >> $GITHUB_ENV
38-
echo "EMAIL_PASSWORD=${{ secrets.EMAIL_PASSWORD }}" >> $GITHUB_ENV
39-
echo "SENDER_EMAIL=${{ secrets.SENDER_EMAIL }}" >> $GITHUB_ENV
40-
41-
echo "DISCORD_CLIENT_ID=${{ secrets.DISCORD_CLIENT_ID }}" >> $GITHUB_ENV
42-
echo "DISCORD_CLIENT_SECRET=${{ secrets.DISCORD_CLIENT_SECRET }}" >> $GITHUB_ENV
43-
44-
echo "GOOGLE_CLIENT_ID=${{ secrets.GOOGLE_CLIENT_ID }}" >> $GITHUB_ENV
45-
echo "GOOGLE_CLIENT_SECRET=${{ secrets.GOOGLE_CLIENT_SECRET }}" >> $GITHUB_ENV
46-
47-
echo "KAKAO_CLIENT_ID=${{ secrets.KAKAO_CLIENT_ID }}" >> $GITHUB_ENV
48-
echo "KAKAO_CLIENT_SECRET=${{ secrets.KAKAO_CLIENT_SECRET }}" >> $GITHUB_ENV
49-
50-
echo "NAVER_CLIENT_ID=${{ secrets.NAVER_CLIENT_ID }}" >> $GITHUB_ENV
51-
echo "NAVER_CLIENT_SECRET=${{ secrets.NAVER_CLIENT_SECRET }}" >> $GITHUB_ENV
52-
env:
53-
EMAIL_USERNAME: ${{ secrets.EMAIL_USERNAME }}
54-
EMAIL_PASSWORD: ${{ secrets.EMAIL_PASSWORD }}
55-
SENDER_EMAIL: ${{ secrets.SENDER_EMAIL }}
56-
DISCORD_CLIENT_ID: ${{ secrets.DISCORD_CLIENT_ID }}
57-
DISCORD_CLIENT_SECRET: ${{ secrets.DISCORD_CLIENT_SECRET }}
58-
GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID }}
59-
GOOGLE_CLIENT_SECRET: ${{ secrets.GOOGLE_CLIENT_SECRET }}
60-
KAKAO_CLIENT_ID: ${{ secrets.KAKAO_CLIENT_ID }}
61-
KAKAO_CLIENT_SECRET: ${{ secrets.KAKAO_CLIENT_SECRET }}
62-
NAVER_CLIENT_ID: ${{ secrets.NAVER_CLIENT_ID }}
63-
NAVER_CLIENT_SECRET: ${{ secrets.NAVER_CLIENT_SECRET }}
37+
docker build -t ${{ secrets.DOCKER_USERNAME }}/play-hive:latest .
6438
65-
- name: Build and Test with Gradle
66-
run: ./gradlew clean build --info
67-
env:
68-
EMAIL_USERNAME: ${{ secrets.EMAIL_USERNAME }}
69-
EMAIL_PASSWORD: ${{ secrets.EMAIL_PASSWORD }}
70-
SENDER_EMAIL: ${{ secrets.SENDER_EMAIL }}
71-
DISCORD_CLIENT_ID: ${{ secrets.DISCORD_CLIENT_ID }}
72-
DISCORD_CLIENT_SECRET: ${{ secrets.DISCORD_CLIENT_SECRET }}
73-
GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID }}
74-
GOOGLE_CLIENT_SECRET: ${{ secrets.GOOGLE_CLIENT_SECRET }}
75-
KAKAO_CLIENT_ID: ${{ secrets.KAKAO_CLIENT_ID }}
76-
KAKAO_CLIENT_SECRET: ${{ secrets.KAKAO_CLIENT_SECRET }}
77-
NAVER_CLIENT_ID: ${{ secrets.NAVER_CLIENT_ID }}
78-
NAVER_CLIENT_SECRET: ${{ secrets.NAVER_CLIENT_SECRET }}
79-
80-
- name: List JAR Files
81-
run: ls -la build/libs/
82-
83-
- name: Upload Artifact
84-
uses: actions/upload-artifact@v3
39+
- name: Login to Docker Hub
40+
uses: docker/login-action@v2
8541
with:
86-
name: spring-app
87-
path: build/libs/*.jar
42+
username: ${{ secrets.DOCKER_USERNAME }}
43+
password: ${{ secrets.DOCKER_PASSWORD }}
44+
45+
- name: Push Docker Image to Docker Hub
46+
run: |
47+
docker push ${{ secrets.DOCKER_USERNAME }}/play-hive:latest
8848
8949
deploy:
90-
needs: build
50+
needs: build-and-push
9151
runs-on: ubuntu-latest
9252

93-
steps:
94-
- name: Download Artifact
95-
uses: actions/download-artifact@v3
96-
with:
97-
name: spring-app
98-
53+
steps:
9954
- name: Install Java on AWS
10055
uses: appleboy/ssh-action@v0.1.10
10156
with:
@@ -112,63 +67,52 @@ jobs:
11267
echo "Java is already installed."
11368
fi
11469
115-
- name: Deploy to AWS
116-
uses: appleboy/scp-action@v0.1.4
117-
with:
118-
host: ${{ secrets.AWS_SERVER_IP }}
119-
username: ${{ secrets.AWS_USERNAME }}
120-
key: ${{ secrets.SSH_PRIVATE_KEY }}
121-
source: "*.jar"
122-
target: "~/play-hive"
123-
124-
- name: Set environment variables on AWS
70+
- name: Deploy to AWS and Restart Services with Docker Compose
12571
uses: appleboy/ssh-action@v0.1.10
12672
with:
12773
host: ${{ secrets.AWS_SERVER_IP }}
12874
username: ${{ secrets.AWS_USERNAME }}
12975
key: ${{ secrets.SSH_PRIVATE_KEY }}
13076
script: |
131-
echo "Setting environment variables on AWS server..."
132-
echo "export EMAIL_USERNAME=${{ secrets.EMAIL_USERNAME }}" >> ~/.bashrc
133-
echo "export EMAIL_PASSWORD=${{ secrets.EMAIL_PASSWORD }}" >> ~/.bashrc
134-
echo "export SENDER_EMAIL=${{ secrets.SENDER_EMAIL }}" >> ~/.bashrc
135-
echo "export DISCORD_CLIENT_ID=${{ secrets.DISCORD_CLIENT_ID }}" >> ~/.bashrc
136-
echo "export DISCORD_CLIENT_SECRET=${{ secrets.DISCORD_CLIENT_SECRET }}" >> ~/.bashrc
137-
echo "export GOOGLE_CLIENT_ID=${{ secrets.GOOGLE_CLIENT_ID }}" >> ~/.bashrc
138-
echo "export GOOGLE_CLIENT_SECRET=${{ secrets.GOOGLE_CLIENT_SECRET }}" >> ~/.bashrc
139-
echo "export KAKAO_CLIENT_ID=${{ secrets.KAKAO_CLIENT_ID }}" >> ~/.bashrc
140-
echo "export KAKAO_CLIENT_SECRET=${{ secrets.KAKAO_CLIENT_SECRET }}" >> ~/.bashrc
141-
echo "export NAVER_CLIENT_ID=${{ secrets.NAVER_CLIENT_ID }}" >> ~/.bashrc
142-
echo "export NAVER_CLIENT_SECRET=${{ secrets.NAVER_CLIENT_SECRET }}" >> ~/.bashrc
143-
source ~/.bashrc
144-
echo "Environment variables set successfully."
145-
146-
- name: Restart Server
147-
uses: appleboy/ssh-action@v0.1.10
148-
with:
149-
host: ${{ secrets.AWS_SERVER_IP }}
150-
username: ${{ secrets.AWS_USERNAME }}
151-
key: ${{ secrets.SSH_PRIVATE_KEY }}
152-
script: |
153-
# Define variables
77+
# 이동할 디렉토리 설정
15478
DEPLOY_DIR=~/play-hive
155-
JAR_FILE=server-0.0.1-SNAPSHOT.jar
15679
157-
# Kill process on port 8080
158-
echo "Finding and killing process on port 8080..."
159-
PID=$(sudo lsof -t -i:8080)
160-
if [ -n "$PID" ]; then
161-
echo "Killing process with PID $PID..."
162-
sudo kill -9 $PID
163-
else
164-
echo "No process found on port 8080."
165-
fi
166-
167-
# Navigate to deployment directory
16880
echo "Navigating to deployment directory: $DEPLOY_DIR"
16981
cd $DEPLOY_DIR || exit
17082
171-
# Start the new server with environment variables
172-
echo "Starting new server: $JAR_FILE"
173-
nohup env EMAIL_USERNAME=${{ secrets.EMAIL_USERNAME }} EMAIL_PASSWORD=${{ secrets.EMAIL_PASSWORD }} SENDER_EMAIL=${{ secrets.SENDER_EMAIL }} java -jar $JAR_FILE > app.log 2>&1 &
174-
echo "Server started. Logs can be found in $DEPLOY_DIR/app.log"
83+
# 최신 Docker 및 Docker Compose 설치 확인
84+
echo "Ensuring Docker and Docker Compose are installed..."
85+
86+
# Docker 설치 여부 확인
87+
if ! docker --version &>/dev/null; then
88+
echo "Docker is not installed. Installing Docker..."
89+
sudo apt-get update
90+
sudo apt-get install -y docker.io
91+
sudo systemctl start docker
92+
sudo systemctl enable docker
93+
else
94+
echo "Docker is already installed."
95+
fi
96+
97+
# Docker Compose 설치 여부 확인
98+
if ! docker-compose --version &>/dev/null; then
99+
echo "Docker Compose is not installed. Installing Docker Compose..."
100+
sudo apt-get update
101+
sudo apt-get install -y docker-compose
102+
else
103+
echo "Docker Compose is already installed."
104+
fi
105+
106+
# 기존 컨테이너 중지 및 제거
107+
echo "Stopping and removing existing containers..."
108+
docker-compose down || true
109+
110+
# 최신 이미지를 가져오기
111+
echo "Pulling the latest Docker image..."
112+
docker-compose pull
113+
114+
# 컨테이너 재실행
115+
echo "Starting containers with Docker Compose..."
116+
docker-compose up -d
117+
118+
echo "Deployment completed successfully!"

0 commit comments

Comments
 (0)