Update README.md #57
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 | |
# 워크플로가 시작될 조건 지정 | |
# 언제 이 파일의 내용이 실행될 것인지 정의 | |
# main 브랜치 코드가 푸쉬 될때만 실행됨 | |
on: | |
push: | |
branches: [ "main" ] | |
# 코드의 내용을 이 파일을 실행하여 action을 수행하는 주체(Github actions에서 사용하는 VM)가 읽을 수 있도록 허용한다는 의미 | |
permissions: | |
contents: read | |
# 실제 실행될 내용을 정의 | |
jobs: | |
build: | |
runs-on: ubuntu-latest # 실행 환경 지정 (ubuntu최신 버전에서 script를 실행) | |
# 실행 스텝 지정 | |
steps: | |
# 지정한 저장소(현재 레포지토리)에서 코드를 워크 플로우 환경으로 가져오도록 하는 github action | |
- uses: actions/checkout@v3 | |
# open jdk 17 버전 환경을 세팅 | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v3 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
- uses: actions/checkout@v3 | |
- run: touch ./src/main/resources/application.properties | |
- run: echo "${{ secrets.APPLICATION }}" > ./src/main/resources/application.properties | |
- run: cat ./src/main/resources/application.properties | |
# gradle을 통해 소스를 빌드. | |
- name: Build with Gradle | |
run: | | |
chmod +x ./gradlew | |
./gradlew clean build -x test | |
# dockerfile을 통해 이미지를 빌드하고, 이를 docker hub repo로 push | |
# 이때 사용되는 ${{ secrets.DOCER_REPO }}/directors-dev가 위에서 만든 도커 repository이다. | |
- name: Login to Docker Hub | |
uses: docker/#-action@v2 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_PASSWORD }} | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Build and push | |
uses: docker/build-push-action@v4 | |
with: | |
context: . | |
file: ./Dockerfile | |
push: true | |
tags: ${{ secrets.DOCKERHUB_REPO }} | |
# appleboy/ssh-action@master 액션을 사용하여 지장한 서버에 ssh로 접속하고, script를 실행한다. | |
# script의 내용은 도커의 기존 프로세스들을 제거하고, docker hub repo로부터 방금 push한 내용을 pull받아 실행하는 것 | |
# 실행시 docker-compose를 사용함 | |
- name: Deploy to server | |
uses: appleboy/ssh-action@master | |
with: | |
key: ${{ secrets.KEY }} | |
host: ${{ secrets.HOST }} | |
username: ${{ secrets.USERNAME }} | |
port: ${{ secrets.PORT }} | |
script: | | |
sudo docker rm -f $(docker ps -qa) | |
sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/idearly-api | |
sudo docker-compose up -d | |
sudo docker image prune -f |