Skip to content

배포 0.

배포 0. #98

Workflow file for this run

name: coffee-meet CD
on:
pull_request:
branches:
- main
jobs:
test_and_deploy:
runs-on: ubuntu-latest
steps:
- name: 현재 작업중인 Repository를 서브 모듈과 함께 가져온다.
uses: actions/checkout@v3
with:
submodules: recursive
token: ${{ secrets.ACTION_TOKEN }}
- name: CD 프로세스를 최적화 하기 위해 Gradle 정보를 캐싱한다.
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: JDK 17 설치한다.
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: .env 파일에 깃 Secrets 로부터 값을 가져와 기록한다.
run: echo "${{ secrets.ENV_PROPERTIES }}" > ./.env
- name: Gradle 명령 실행을 위한 권한을 부여한다.
run: chmod +x gradlew
- name: Gradle test & build 를 수행한다.
run: |
./gradlew clean test -Pprofile=test
./gradlew clean build
- name: 현재 디렉토리에 있는 Dockerfile(Jar)을 이미지 빌드한다.
run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/boot-prac-ci .
- name: Docker Hub 에 로그인한다.
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: 빌드된 도커 이미지(Jar)를 Docker Hub 에 푸쉬한다.
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/boot-prac-ci:latest
- name: ./.env 경로의 환경 변수 파일을 Ec2 서버의 기본 경로에 전달한다.
uses: appleboy/scp-action@master
with:
username: ubuntu
host: ${{ secrets.HOST }}
key: ${{ secrets.PRIVATE_KEY }}
source: "./.env"
target: "/home/ubuntu"
- name: 기존의 Jar 이미지를 삭제하고, Docker Hub 를 통해 새 Jar 이미지를 실행한다.
uses: appleboy/[email protected]
with:
host: ${{ secrets.HOST }}
username: ubuntu
key: ${{ secrets.PRIVATE_KEY }}
script: |
sudo docker ps -q | grep -v $(sudo docker ps -qf "name=redis") | xargs -r sudo docker stop
sudo docker ps -aq | grep -v $(sudo docker ps -aqf "name=redis") | xargs -r sudo docker rm
sudo docker image prune -a -f
sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/boot-prac-ci:latest
sudo docker run -d --log-driver=syslog --env-file .env -p 8080:8080 ${{ secrets.DOCKERHUB_USERNAME }}/boot-prac-ci:latest