Skip to content

Commit 8457908

Browse files
authored
Merge pull request #117 from Renzzle/develop
Add CD-TEST on Main Branch
2 parents 6fe9516 + 93e4939 commit 8457908

File tree

3 files changed

+101
-2
lines changed

3 files changed

+101
-2
lines changed
Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@ jobs:
3535
JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }}
3636
run: ./gradlew build -x test --stacktrace
3737

38-
# TODO : 빌드 시 테스트 되게 하기
39-
4038
- name: Set up Docker environment
4139
run: |
4240
sudo apt-get update

.github/workflows/cd-test.yml

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
name: Deploy to Home Test Server (WireGuard)
2+
3+
on:
4+
issue_comment:
5+
types: [created]
6+
7+
jobs:
8+
deploy:
9+
runs-on: ubuntu-latest
10+
if: >
11+
github.event.issue.pull_request &&
12+
contains(github.event.comment.body, '/test deploy')
13+
14+
steps:
15+
- name: Checkout code
16+
uses: actions/checkout@v4
17+
with:
18+
ref: develop
19+
20+
- name: Install WireGuard
21+
run: |
22+
sudo apt-get update
23+
sudo apt-get install -y wireguard resolvconf
24+
25+
- name: Create & Start WireGuard
26+
run: |
27+
echo "${{ secrets.WIREGUARD_CONFIG }}" > wg0.conf
28+
sudo cp wg0.conf /etc/wireguard/wg0.conf
29+
sudo chmod 600 /etc/wireguard/wg0.conf
30+
sudo wg-quick up wg0
31+
32+
- name: Check VPN Connection
33+
run: |
34+
sudo wg show
35+
ping -c 3 ${{ secrets.TEST_HOST }}
36+
37+
- name: Set up JDK 17
38+
uses: actions/setup-java@v3
39+
with:
40+
java-version: '17'
41+
distribution: 'temurin'
42+
43+
- name: Grant execute permission for gradlew
44+
run: chmod +x ./gradlew
45+
46+
- name: Build with Gradle
47+
env:
48+
DB_ADDRESS: ${{ secrets.DB_ADDRESS }}
49+
DB_USER: ${{ secrets.DB_USER }}
50+
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
51+
REDIS_PASSWORD: ${{ secrets.REDIS_PASSWORD }}
52+
GMAIL_ADDRESS: ${{ secrets.GMAIL_ADDRESS }}
53+
GMAIL_PASSWORD: ${{ secrets.GMAIL_PASSWORD }}
54+
JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }}
55+
run: ./gradlew build -x test --stacktrace
56+
57+
- name: Login to Docker Hub
58+
uses: docker/login-action@v3
59+
with:
60+
username: ${{ secrets.DOCKER_USERNAME }}
61+
password: ${{ secrets.DOCKER_PASSWORD }}
62+
63+
- name: Build and Push Docker image
64+
run: |
65+
docker build -t renzzle/github-action:test-latest .
66+
docker push renzzle/github-action:test-latest
67+
68+
- name: Create .env file for Test Server
69+
run: |
70+
echo "DB_ADDRESS=db:3306/${{ secrets.DB_NAME }}" >> .env
71+
echo "DB_USER=${{ secrets.DB_USER }}" >> .env
72+
echo "DB_PASSWORD=${{ secrets.DB_PASSWORD }}" >> .env
73+
echo "DB_ROOT_PASSWORD=${{ secrets.DB_ROOT_PASSWORD }}" >> .env
74+
echo "DB_NAME=${{ secrets.DB_NAME }}" >> .env
75+
echo "REDIS_PASSWORD=${{ secrets.REDIS_PASSWORD }}" >> .env
76+
echo "GMAIL_PASSWORD=${{ secrets.GMAIL_PASSWORD }}" >> .env
77+
echo "GMAIL_ADDRESS=\"${{ secrets.GMAIL_ADDRESS }}\"" >> .env
78+
echo "JWT_SECRET_KEY=\"${{ secrets.JWT_SECRET_KEY }}\"" >> .env
79+
80+
- name: Copy Files to Home Server
81+
uses: appleboy/scp-action@master
82+
with:
83+
host: ${{ secrets.TEST_HOST }}
84+
username: ${{ secrets.TEST_USERNAME }}
85+
key: ${{ secrets.TEST_PRIVATE_KEY }}
86+
source: "./docker-compose.yml,./docker-compose.prod.yml,./.env"
87+
target: "/home/${{ secrets.TEST_USERNAME }}/app/"
88+
overwrite: true
89+
90+
- name: Deploy via SSH
91+
uses: appleboy/ssh-action@master
92+
with:
93+
host: ${{ secrets.TEST_HOST }}
94+
username: ${{ secrets.TEST_USERNAME }}
95+
key: ${{ secrets.TEST_PRIVATE_KEY }}
96+
script: |
97+
cd /home/${{ secrets.TEST_USERNAME }}/app/
98+
docker-compose -f docker-compose.yml -f docker-compose.prod.yml down
99+
docker-compose -f docker-compose.yml -f docker-compose.prod.yml pull
100+
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
101+
docker image prune -f

0 commit comments

Comments
 (0)