Merge pull request #141 from MADA-UMC/develop #32
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 워크 플로우 이름 | |
name: Java CI with Gradle | |
# 워크 플로우가 언제 실행 될지를 정한다. | |
on: | |
push: | |
branches: [ "main" ] | |
pull_request: | |
branches: [ "main" ] | |
# 워크 플로우가 깃 레포에 대한 권한을 읽기 만 가능하게 설정한다. | |
permissions: | |
contents: read | |
# 워크플로우에서 할 작업 정의한다. | |
jobs: | |
# 작업 환경 = 우분투 최신 버전 | |
build: | |
runs-on: ubuntu-latest | |
# 깃허브에서 제공하는 checkout 엑션 사용 | |
steps: | |
- uses: actions/checkout@v3 | |
# JDK 17 설정한당 | |
# temurin = Adoptium에서 제공하는 JDK | |
- name: Set up JDK 11 | |
uses: actions/setup-java@v3 | |
with: | |
java-version: '11' | |
distribution: 'temurin' | |
- name: copy properties | |
run: | | |
cd ./src/main | |
mkdir ./resources | |
cd ./resources | |
touch ./application.properties | |
touch ./application-DB.properties | |
touch ./application-jwt.properties | |
touch ./application-oauth2.properties | |
touch ./application-s3.properties | |
echo "${{secrets.APPLICATION_PROPERTIES}}" > ./application.properties | |
echo "${{secrets.APPLICATION_DB_PROPERTIES}}" > ./application-DB.properties | |
echo "${{secrets.APPLICATION_JWT_PROPERTIES}}" > ./application-jwt.properties | |
echo "${{secrets.APPLICATION_S3_PROPERTIES}}" > ./application-s3.properties | |
echo "${{secrets.APPLICATION_OAUTH2_PROPERTIES}}" > ./application-oauth2.properties | |
# gradle wrapper 파일에 실행 권한을 부여 | |
# gradle wrapper = 개발자가 특정 버전의 Gradle을 미리 설치하지 않고도 Gradle 빌드를 실행할 수 있게 해주는 편리한 도구 | |
- name: Grant execute permission for gradlew | |
run: chmod +x gradlew | |
# Gradle 빌드 엑션을 이용해서 프로젝트 빌드 | |
- name: Build with Gradle | |
uses: gradle/[email protected] | |
with: | |
arguments: build | |
- name: Create Docker Images | |
run : | | |
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} | |
docker build -t ${{ secrets.DOCKER_USERNAME }}/mada-project:latest . | |
docker push ${{ secrets.DOCKER_USERNAME }}/mada-project:latest | |
# 배포 ** | |
deploy: | |
needs: build | |
runs-on: ubuntu-latest | |
# 위의 빌드작업한 JAR 파일 = 아티팩트를 다운로드 | |
steps: | |
- name: Download Docker Container | |
uses: appleboy/ssh-action@master | |
id: deploy-prod | |
with: | |
host: ${{ secrets.EC2_HOST }} | |
username: ${{ secrets.EC2_USERNAME }} | |
key: ${{ secrets.EC2_SSH_KEY }} | |
script: | | |
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/mada-project:latest | |
sudo docker stop $(docker ps -a -q) | |
sudo docker run -d -p 8080:8080 ${{ secrets.DOCKER_USERNAME }}/mada-project:latest | |
sudo docker rm $(docker ps --filter 'status=exited' -a -q) | |
sudo docker image prune -a -f |