1+ name : CI/CD Dev
2+
3+ on :
4+ push :
5+ branches : [ "develop" ]
6+
7+ jobs :
8+ ci :
9+ runs-on : ubuntu-latest
10+
11+ steps :
12+ - name : 1. Checkout source
13+ uses : actions/checkout@v4
14+
15+ - name : 2. Set up JDK
16+ uses : actions/setup-java@v4
17+ with :
18+ java-version : 21
19+ distribution : temurin
20+
21+ - name : 3. application.yml 파일 설정
22+ run : |
23+ mkdir -p src/main/resources
24+ echo "${{ secrets.APPLICATION_YML }}" > ./src/main/resources/application.yml
25+
26+ - name : 4. Gradle Wrapper 권한 부여
27+ run : chmod +x gradlew
28+
29+ - name : 5. Gradle Caching
30+ uses : actions/cache@v3
31+ with :
32+ path : |
33+ ~/.gradle/caches
34+ ~/.gradle/wrapper
35+ key : ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
36+ restore-keys : |
37+ ${{ runner.os }}-gradle-
38+
39+ - name : 6. Build JAR
40+ run : ./gradlew clean build -x test
41+
42+ - name : 7. Docker login
43+ uses : docker/login-action@v3
44+ with :
45+ username : ${{ secrets.DOCKER_USERNAME }}
46+ password : ${{ secrets.DOCKER_ACCESS_TOKEN }}
47+
48+ - name : 8. Build & Push Docker image
49+ uses : docker/build-push-action@v5
50+ with :
51+ context : .
52+ dockerfile : Dockerfile
53+ push : true
54+ tags : ${{ secrets.DOCKER_USERNAME }}/server:latest
55+
56+ cd :
57+ needs : ci
58+ runs-on : ubuntu-latest
59+
60+ steps :
61+ - name : 1. Checkout source
62+ uses : actions/checkout@v4
63+
64+ - name : 2. Create .env file
65+ run : |
66+ echo "${{ secrets.ENV }}" > .env
67+
68+ - name : 2-1. .env 파일 EC2에 전송
69+ uses : appleboy/scp-action@master
70+ with :
71+ host : ${{ secrets.EC2_PUBLIC_IP }}
72+ username : ${{ secrets.SSH_USER }}
73+ key : ${{ secrets.EC2_PRIVATE_KEY }}
74+ source : " .env"
75+ target : " /home/ubuntu/stepbookstep-dev/docker/"
76+
77+ - name : Check docker-compose.dev.yml exists
78+ run : ls -al ./docker/
79+
80+ - name : 3. docker-compose.yml 전달
81+ uses : appleboy/scp-action@master
82+ with :
83+ host : ${{ secrets.EC2_PUBLIC_IP }}
84+ username : ${{ secrets.SSH_USER }}
85+ key : ${{ secrets.EC2_PRIVATE_KEY }}
86+ source : " ./docker/docker-compose.dev.yml"
87+ target : " /home/ubuntu/stepbookstep-dev/docker/" # <= 경로 일치시킴
88+
89+
90+ - name : 4. SSH to Dev Server and Deploy
91+ uses : appleboy/ssh-action@master
92+ with :
93+ host : ${{ secrets.EC2_PUBLIC_IP }}
94+ username : ${{ secrets.SSH_USER }}
95+ key : ${{ secrets.EC2_PRIVATE_KEY }}
96+ script : |
97+ cd /home/ubuntu/stepbookstep-dev/docker/
98+ docker pull ${{ secrets.DOCKER_USERNAME }}/server:latest
99+ docker compose -f docker-compose.dev.yml down
100+ docker compose -f docker-compose.dev.yml up -d
0 commit comments