Merge remote-tracking branch 'origin/develop' into develop #17
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
# Workflow의 이름을 지정합니다. | |
name: Daybook - BackEnd - CD | |
on: | |
push: | |
# main branch에 push(merge)될 경우 실행됩니다. | |
branches: [ "main" ] | |
permissions: | |
contents: read | |
jobs: | |
build: | |
# build를 진행할 운영체제를 선택합니다. | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
# JDK를 11 버전으로 셋팅합니다. | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v3 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
- name: Setup Gradle | |
uses: gradle/gradle-build-action@v2 | |
with: | |
arguments: check | |
cache-read-only: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/develop' }} | |
# 프로젝트 저장소에 업로드하면 안되는 설정 파일들을 만들어줍니다. | |
- name: Make application.yml | |
run: | | |
# 필요한 yml 파일들을 만들어줍니다. | |
mkdir -p ./src/main/resources | |
echo "$APPLICATION" > ./src/main/resources/application.yml | |
env: | |
APPLICATION: ${{ secrets.APPLICATION }} | |
shell: bash | |
- name: Gradle 권한 부여 | |
run: chmod +x gradlew | |
- name: Gradle로 빌드 실행 | |
run: ./gradlew bootjar | |
# 배포에 필요한 여러 설정 파일과 프로젝트 빌드파일을 zip 파일로 모아줍니다. | |
- name: zip file 생성 | |
run: | | |
mkdir deploy | |
cp ./docker/docker-compose.blue.yml ./deploy/ | |
cp ./docker/docker-compose.green.yml ./deploy/ | |
cp ./appspec.yml ./deploy/ | |
cp ./docker/Dockerfile ./deploy/ | |
cp ./scripts/*.sh ./deploy/ | |
cp ./build/libs/*.jar ./deploy/ | |
chmod +x ./deploy/deploy.sh | |
zip -r -qq -j ./daybook-app.zip ./deploy | |
# AWS에 연결해줍니다. | |
- name: AWS 연결 | |
uses: aws-actions/configure-aws-credentials@v1 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
# S3에 프로젝트를 업로드 합니다. | |
- name: S3에 프로젝트 업로드 | |
run: | | |
aws s3 cp \ | |
--region ap-northeast-2 \ | |
./daybook-app.zip s3://daybook-server | |
# CodeDelploy에 배포를 요청합니다. | |
- name: Code Deploy 배포 요청 | |
run: aws deploy create-deployment --application-name daybook-code-deploy-app | |
--deployment-config-name CodeDeployDefault.AllAtOnce | |
--deployment-group-name daybook-code-deploy-app | |
--s3-location bucket=daybook-server,bundleType=zip,key=daybook-app.zip |