Skip to content

Commit 35e8fca

Browse files
committed
cicd test
1 parent 8f99104 commit 35e8fca

2 files changed

Lines changed: 73 additions & 0 deletions

File tree

.github/workflows/deploy.yml

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
name: Deploy To EC2
2+
3+
on:
4+
push:
5+
branches:
6+
- "feat/#49-cicd-setup"
7+
8+
jobs:
9+
Deploy:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: Github Repository 파일 불러오기
13+
uses: actions/checkout@v4
14+
15+
- name: JDK 21버전 설치
16+
uses: actions/setup-java@v4
17+
with:
18+
distribution: temurin
19+
java-version: 21
20+
21+
- name: application.yml (공통) 파일 생성
22+
run: |
23+
mkdir -p ./src/main/resources
24+
echo "${{ secrets.APPLICATION_YML }}" > ./src/main/resources/application.yml
25+
26+
- name: application-local.yml (개발용) 파일 생성
27+
run: |
28+
echo "${{ secrets.APPLICATION_LOCAL_YML }}" > ./src/main/resources/application-local.yml
29+
30+
- name: 테스트 및 빌드하기
31+
run: ./gradlew clean build
32+
33+
- name: AWS credentials 인증 설정 (Resource 접근 권한)
34+
uses: aws-actions/configure-aws-credentials@v4
35+
with:
36+
aws-region: ap-northeast-2
37+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
38+
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
39+
40+
- name: ECR에 로그인
41+
id: login-ecr
42+
uses: aws-actions/amazon-ecr-login@v2
43+
44+
- name: docker 이미지 생성
45+
run: docker build -t remu-server .
46+
47+
- name: docker 이미지에 Tag 붙이기
48+
run: docker tag remu-server ${{ steps.login-ecr.outputs.registry }}/remu-server:latest
49+
50+
- name: ECR에 docker 이미지 push
51+
run: docker push ${{ steps.login-ecr.outputs.registry }}/remu-server:latest
52+
53+
- name: SSH로 EC2에 접속 및 배포 실행
54+
uses: appleboy/ssh-action@v1.0.3
55+
with:
56+
host: ${{ secrets.EC2_HOST }}
57+
username: ${{ secrets.EC2_USERNAME }}
58+
key: ${{ secrets.EC2_PRIVATE_KEY }}
59+
script_stop: true
60+
script: |
61+
docker stop remu-server || true
62+
docker rm remu-server || true
63+
docker pull ${{ steps.login-ecr.outputs.registry }}/remu-server:latest
64+
docker run -d --name remu-server -p 8080:8080 ${{ steps.login-ecr.outputs.registry }}/remu-server:latest

Dockerfile

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Java 21 및 Alpine 리눅스 기반 (가볍고 빠름)
2+
FROM eclipse-temurin:21-jdk-alpine
3+
4+
# 빌드 결과물인 jar 파일을 컨테이너 내부로 복사
5+
# build.gradle의 version = '0.0.1-SNAPSHOT' 설정을 반영.
6+
COPY ./build/libs/*-0.0.1-SNAPSHOT.jar project.jar
7+
8+
# 애플리케이션 실행
9+
ENTRYPOINT ["java", "-jar", "project.jar"]

0 commit comments

Comments
 (0)