Skip to content

Commit

Permalink
[Weekly/10/Deploy/CICD] CI/CD 관련 스크립트 추가 (#74)
Browse files Browse the repository at this point in the history
  • Loading branch information
lja3723 committed Nov 7, 2024
1 parent 2bcc318 commit 1c4f47e
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 1 deletion.
68 changes: 68 additions & 0 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: CI/CD Github Action

on:
push:
branches: [ "Master", "Weekly/*" ]
pull_request:
branches: [ "Master", "Weekly/*" ]

permissions:
contents: read

jobs:
CI-CD:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v4

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'corretto'

- name: Gradle Caching (for faster build)
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
# 테스트까지 포함해 빌드하려면 -x test를 제거하기
- name: Build With Gradle (exclude test)
run: |
chmod +x gradlew
./gradlew clean build -x test
- name: Docker Hub Login
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}

- name: Docker Build & Push
run: |
docker build -f Dockerfile --build-arg DEPENDENCY=build/dependency --platform linux/amd64 -t ${{ secrets.DOCKER_REPO_FULLNAME }} .
docker push ${{ secrets.DOCKER_REPO_FULLNAME }}
- name: Deploy to Server
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SSH_HOST }} # EC2 퍼블릭 IPv4 DNS
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: ${{ secrets.SSH_PORT }}
envs: GITHUB_SHA
script: |
echo "[script] docker pull"
sudo docker pull ${{ secrets.DOCKER_REPO_FULLNAME }}
echo "[script] docker stop"
sudo docker stop would-you-in
echo "[script] docker run"
sudo docker run --rm -d -p 80:8080 --env-file ~/.env --name would-you-in ${{ secrets.DOCKER_REPO_FULLNAME }}
echo "[script] docker image clean-up"
sudo docker image prune -f
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,6 @@ out/

### static images
/src/main/resources/staticimages/

### env file
.env
12 changes: 12 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# open jdk 21 버전의 환경을 구성한다.
FROM openjdk:21-jdk-slim

# build가 될 때 JAR_FILE이라는 변수 명에 build/libs/*.jar 선언
# build/libs - gradle로 빌드했을 때 jar 파일이 생성되는 경로임
ARG JAR_FILE=build/libs/*.jar

# JAR_FILE을 agaproject.jar로 복사 (이 부분(.jar)은 개발환경에 따라 다름)
COPY ${JAR_FILE} wouldyouin.jar

# 운영 및 개발에서 사용되는 환경 설정을 분리한다.
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=deploy", "/wouldyouin.jar"]
2 changes: 1 addition & 1 deletion src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
spring:
application.name: WouldYouIn
profiles:
default: ${ACTIVE_PROFILE}
default: dev

# 소셜로그인 테스트시 캐시 비활성화
thymeleaf:
Expand Down

0 comments on commit 1c4f47e

Please sign in to comment.