Skip to content

Merge branch 'main' into develop #178

Merge branch 'main' into develop

Merge branch 'main' into develop #178

name: action-develop-cd
# 언제 이 파일의 내용이 실행될 것인지 정의
on:
push:
branches:
- develop
# 코드의 내용을 이 파일을 실행하여 action을 수행하는 주체(Github Actions에서 사용하는 VM)가 읽을 수 있도록 권한을 설정
permissions:
contents: read
# 실제 실행될 내용들을 정의합니다.
jobs:
build:
runs-on: ubuntu-latest # ubuntu 최신 버전에서 script를 실행
steps:
# 지정한 저장소(현재 REPO)에서 코드를 워크플로우 환경으로 가져오도록 하는 github action
# submodule 을 사용하기 위한 설정을 추가
- name: Checkout repository
uses: actions/checkout@v3
with:
token: ${{secrets.ACTION_TOKEN}}
submodules: true
# open jdk 17 버전 환경을 세팅
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: "corretto"
# 캐시를 사용하기위해 buildx 를 사용
- name: Setup docker buildx
uses: docker/setup-buildx-action@v2
# gradle을 통해 소스를 빌드.
- name: Build with gradle
run: |
chmod +x ./gradlew
./gradlew clean build -x test
# 설정 파일 서버(EC2)로 전달
- name: Send docker-compose.yml and nginx.conf
uses: appleboy/scp-action@master
with:
username: ubuntu
host: ${{ secrets.KCS_HOST_DEV }}
key: ${{ secrets.KCS_KEY_DEV }}
source: "src/main/resources/backend-submodule,./nginx/nginx.conf"
target: "/home/ubuntu/"
# Docker hub 로그인
- name: Login to dockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME}}
password: ${{ secrets.DOCKER_TOKEN}}
# Docker Hub 에 Springboot 푸시
- name: Build and push springboot
uses: docker/build-push-action@v4
with:
context: .
file: ./Dockerfile.dev
push: true
tags: ${{ secrets.DOCKER_REPOSITORY }}:latest
cache-from: type=gha
cache-to: type=gha, mode=max
# Discord 에 알람 보내기
- name: Discord notification
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
uses: Ilshidur/action-discord@master
with:
args: '{{ EVENT_PAYLOAD.repository.full_name }} 가 배포 되었 습니다. 개발 서버가 재시작 됩니다.'
# appleboy/ssh-action@master 액션을 사용하여 지정한 서버에 ssh로 접속하고, script를 실행합니다.
# 실행 시, docker-compose를 사용합니다.
# useranme : ubuntu 우분투 기반 ec2 일 경우 기본이름
- name: Deploy to server
uses: appleboy/ssh-action@master
with:
username: ubuntu
host: ${{ secrets.KCS_HOST_DEV }}
key: ${{ secrets.KCS_KEY_DEV }}
script: |
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
sudo docker pull {{ secrets.DOCKER_REPOSITORY }}:latest
docker-compose -f docker-compose-dev.yml down
docker rmi $(docker images -q)
cp -f ./src/main/resources/backend-submodule/docker-compose-dev.yml .
docker-compose -f docker-compose-dev.yml up -d