Skip to content

Update README.md

Update README.md #36

Workflow file for this run

# 워크플로우의 이름을 지정합니다.
name: be server push
# 워크플로우의 실행 트리거를 지정합니다.
on:
push:
branches:
- main
workflow_dispatch: # 워크플로우 수동 실행 옵션
jobs:
build:
runs-on: ubuntu-latest # 'ubuntu-latest' 환경에서 실행
services:
mysql_db:
image: mysql:8.0
ports:
- 3306:3306 # HOST:CONTAINER
env:
MYSQL_ROOT_PASSWORD: admin
MYSQL_DATABASE: secondhand
MYSQL_USER: test
MYSQL_PASSWORD: test
steps:
# 저장소 코드를 체크아웃합니다.
- name: 코드 체크아웃
uses: actions/checkout@v4
# Java 환경을 설정합니다.
- name: Java 설정
uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: '11'
# Gradle wrapper와 의존성들을 캐싱합니다.
- name: 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: 비밀 키 적용
run: |
echo "${{ secrets.CLOUD }}" | base64 --decode > second-hand-b/src/main/resources/application-cloud.yml
echo "${{ secrets.OAUTH2 }}" | base64 --decode > second-hand-b/src/main/resources/application-oauth2.yml
- name: 프로젝트 빌드
run: |
cd second-hand-b
chmod +x gradlew
./gradlew build
# QEMU 에뮬레이터를 설정합니다.
- name: QEMU 설정
uses: docker/setup-qemu-action@v2
# Docker Buildx 기능을 설정합니다.
- name: Docker Buildx 설정
uses: docker/setup-buildx-action@v2
# Docker Hub에 로그인합니다.
- name: Docker Hub 로그인
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
# Docker 이미지를 빌드하고 Docker Hub에 푸시합니다.
- name: Docker 이미지 빌드 및 푸시
uses: docker/build-push-action@v4
with:
context: .
file: Dockerfile.be
push: true
tags: ${{ secrets.BE_IMG_TAG }}
# EC2 인스턴스에 배포를 진행합니다.
- name: EC2에 배포
env:
PRIVATE_KEY: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
HOST: ${{ secrets.EC2_HOST }}
USER: ${{ secrets.EC2_USER }}
TAG: ${{ secrets.BE_IMG_TAG }}
run: |
# Private key를 파일로 생성합니다.
echo "$PRIVATE_KEY" > private_key.pem
chmod 600 private_key.pem
# EC2 인스턴스에 SSH로 접속하여 Docker 컨테이너를 관리합니다.
ssh -o StrictHostKeyChecking=no -i private_key.pem $USER@$HOST "
sudo docker pull $TAG
sudo docker stop be && sudo docker rm be
sudo docker run -d --name be --network=secondhand -v ~/be/yml:/be/config/:ro $TAG
"
Coveralls:
runs-on: ubuntu-latest
services:
mysql_db:
image: mysql:8.0
ports:
- 3306:3306 # HOST:CONTAINER
env:
MYSQL_ROOT_PASSWORD: admin
MYSQL_DATABASE: secondhand
MYSQL_USER: test
MYSQL_PASSWORD: test
# 작업에서 실행될 순차적인 단계를 정의합니다.
steps:
- name: 코드 체크아웃
uses: actions/checkout@v4
- name: Java 설정
uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: '11'
# Gradle wrapper와 의존성들을 캐싱합니다.
- name: 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: 비밀 키 적용
run: |
echo "${{ secrets.CLOUD }}" | base64 --decode > second-hand-b/src/main/resources/application-cloud.yml
echo "${{ secrets.OAUTH2 }}" | base64 --decode > second-hand-b/src/main/resources/application-oauth2.yml
- name: jacoco
run: |
cd second-hand-b
chmod +x gradlew
./gradlew clean test jacocoTestReport
- name: Coveralls
uses: coverallsapp/github-action@v2
with:
base-path: second-hand-b/build/reports/jacoco/**/*.xml