Skip to content

test2

test2 #4

Workflow file for this run

name: CI/CD
# main, deploy 브랜치에 push하면 워크플로우 실행
on:
push:
branches: [ "main" ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: 17
distribution: 'zulu'
# repository secrets에 올린 application.yml을 빌드 시 생성
- name: Make application.yml
run: |
mkdir ./src/main/resources
cd ./src/main/resources
touch ./application.yml
echo "${{ secrets.APPLICATION }}" > ./application.yml
- name: Gradle Caching
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Build with Gradle
run: |
chmod +x ./gradlew
./gradlew build -x test
# ID, PW를 이용해 Docker hub에 로그인
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
# Docker 이미지 빌드 후 푸시
- name: Docker build & push
uses: docker/build-push-action@v2
with:
# 빌드 컨텍스트 지정: 지정한 디렉토리 안에 Dockerfile이 있어야 함
context: .
# 빌드에 사용할 Dockerfile의 경로 지정
file: ./Dockerfile
platforms: linux/arm64/v8
# 빌드 후 Docker 레지스트리에 푸시할지 여부 지정
push: true
# 이미지 태그 지정
tags: ${{ secrets.DOCKER_REPO }}:latest
# SSH를 사용하여 EC2에 명령을 전달
- name: Deploy to Server
uses: appleboy/ssh-action@master
with:
# 원격 서버의 호스트 주소 지정
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.KEY }}
envs: GITHUB_SHA
# 아래 명령들을 실행
script: |
sudo docker rm -f $(sudo docker ps -qa)
sudo docker pull ${{ secrets.DOCKER_REPO }}:latest
sudo docker run -d -p 8080:8080 ${{ secrets.DOCKER_REPO }}:latest
sudo docker image prune -f