Skip to content

refactor: 클래스명 수정 #19

refactor: 클래스명 수정

refactor: 클래스명 수정 #19

Workflow file for this run

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle
# GitHub Repository Actions Tab 에 표시될 Workflow 이름
name: Java CI with Gradle
# 작업을 트리거하는 이벤트
# main 브랜치에 push, pull_request 이벤트 발생시 트리거
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
permissions:
contents: read
# Workflow는 jobs로 구성
# jobs는 순서대로 또는 병렬로 실행될 수 있음
jobs:
# 첫 번째 job 정의 => 이름: build
build:
# VM의 실행 환경 지정 => GitHub에서 호스팅하는 최신버전의 ubuntu runner에서 실행
runs-on: ubuntu-latest
# job을 구성하는 단계, 각 단계는 독립적인 action or shell script
# 각 단계는 - 기호로 구분하고 리스트 형태로 나열함
# - run <script>: script 호출
# - uses <action>: action 호출
steps:
# 원격저장소의 코드를 CI 서버가 내려받는 step
# GitHub이 제공하는 actions/checkout@v3 호출
- name: Checkout
uses: actions/checkout@v3
# CI 서버 환경에 JDK17 설치하는 step
# GitHub이 제공하는 actions/setup-java@v3 호출
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
# CI 서버 환경에 캐싱된 gradle dependency를 복구하는 step
- name: Cache Depedency Library
uses: actions/cache@v3.2.6
with:
path: | # 캐싱할 데이터들의 경로
~/.gradle/caches
~/.gradle/wrapper
# key를 통해 캐싱서버로부터 파일을 복구
# gradle 파일들을 해싱한 값을 키로 활용
# gradle 파일에 변화가 생긴다면 해시가 바뀌어 새로운 key로 새롭게 캐시
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
# Gradle Build를 위한 권한 부여
- name: Grant execute permission for gradlew
run: chmod +x gradlew
# Gradle clean build를 수행하는 step
- name: Build with Gradle
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
with:
arguments: clean build
# DockerHub 로그인
- name: DockerHub Login
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
# Docker 이미지 빌드
- name: Docker Image Build
run: docker build --platform linux/arm64 -t ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.PROJECT_NAME }} .
# DockerHub Push
- name: DockerHub Push
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.PROJECT_NAME }}
# EC2 인스턴스 접속 및 애플리케이션 실행
- name: Application Run
uses: appleboy/ssh-action@v0.1.6
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_KEY }}
script: |
sudo docker kill ${{ secrets.PROJECT_NAME }}
sudo docker rm -f ${{ secrets.PROJECT_NAME }}
sudo docker rmi ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.PROJECT_NAME }}
sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.PROJECT_NAME }}
sudo docker run -p ${{ secrets.PORT }}:${{ secrets.PORT }} \
--name ${{ secrets.PROJECT_NAME }} \
-e DB_URL=${{ secrets.DB_URL }} \
-e DB_USERNAME=${{ secrets.DB_USERNAME }} \
-e DB_PASSWORD=${{ secrets.DB_PASSWORD }} \
-e IAMPORT_KEY=${{ secrets.IAMPORT_KEY }} \
-e IAMPORT_SECRET=${{ secrets.IAMPORT_SECRET }} \
-d ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.PROJECT_NAME }}