Skip to content

[FEAT] 내가 작성한 편지 조회 API 구현 #61

[FEAT] 내가 작성한 편지 조회 API 구현

[FEAT] 내가 작성한 편지 조회 API 구현 #61

Workflow file for this run

name: Blue-Green deployment
on:
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
env:
DATASOURCE_URL_LOCAL: ${{ secrets.DATASOURCE_URL_LOCAL }}
DATASOURCE_USERNAME: ${{ secrets.DATASOURCE_USERNAME }}
DATASOURCE_PASSWORD: ${{ secrets.DATASOURCE_PASSWORD }}
JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }}
JWT_EXPIRED_IN: ${{ secrets.JWT_EXPIRED_IN }}
REFRESH_TOKEN_EXPIRED_IN: ${{ secrets.REFRESH_TOKEN_EXPIRED_IN }}
KAKAO_CLIENT_KEY: ${{ secrets.KAKAO_CLIENT_KEY }}
KAKAO_REDIRECT_URL: ${{ secrets.KAKAO_REDIRECT_URL }}
KAKAO_REDIRECT_URL_TEST: ${{ secrets.KAKAO_REDIRECT_URL_TEST }}
steps:
# 레포지토리의 특정 브랜치, 커밋을 가져오는 설정
# Github Action 라이브러리인 actions/checkout@v3 액션을 사용
- uses: actions/checkout@v3
# JDK 셋업
# Github Action 라이브러리인 actions/setup-java@v3 액션을 사용
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
# Gradle 빌드에 필요한 데이터를 캐싱하여 빌드 속도를 향상시키는 설정
# Github Action 라이브러리인 actions/cache 액션을 사용
# Gradle 캐시에 의존성, 래퍼 등을 빌드할 때 저장해두었다가 나중에 재빌드할 때 재사용해서 속도를 향상
- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
restore-keys: ${{ runner.os }}-gradle-
# gradle 파일에 접근할 권한을 부여
- name: Run chmod to make gradlew executable
run: chmod +x ./gradlew
# build 작업 수행
- name: Build with Gradle Wrapper
run: ./gradlew build
# docker image를 build 하고 docker hub에 push
# docker image를 build 하고 docker hub에 push
- name: Docker Build and Push
run: |
sudo docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
sudo docker build \
--build-arg DATASOURCE_URL_LOCAL=${{ secrets.DATASOURCE_URL_LOCAL }} \
--build-arg DATASOURCE_USERNAME=${{ secrets.DATASOURCE_USERNAME }} \
--build-arg DATASOURCE_PASSWORD=${{ secrets.DATASOURCE_PASSWORD }} \
--build-arg JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }} \
--build-arg JWT_EXPIRED_IN=${{ secrets.JWT_EXPIRED_IN }} \
--build-arg REFRESH_TOKEN_EXPIRED_IN=${{ secrets.REFRESH_TOKEN_EXPIRED_IN }} \
--build-arg KAKAO_CLIENT_KEY=${{ secrets.KAKAO_CLIENT_KEY }} \
--build-arg KAKAO_REDIRECT_URL=${{ secrets.KAKAO_REDIRECT_URL }} \
--build-arg KAKAO_REDIRECT_URL_TEST=${{ secrets.KAKAO_REDIRECT_URL_TEST }} \
--platform linux/amd64 \
-f ./.deploy/Dockerfile \
-t ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPOSITORY }} .
sudo docker push ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPOSITORY }}
deploy:
needs: build
runs-on: ubuntu-latest
steps:
# DockerHub에 로그인
# GitHub Action 라이브러리 사용
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
# .env 파일에 환경 변수 값들 집어넣기 (Github Secret 에 저장한 정보를 .env 파일로 echo)
# 그리고 Blue-Green 배포 스크립트인 deploy.sh 실행
- name: Run a New Version of the the application on EC2
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_KEY }}
script: |
cd ~/Backend/.deploy
rm -rf ./.env
touch ./.env
echo "DOCKER_USERNAME=${{ secrets.DOCKER_USERNAME }}" >> ./.env
echo "DOCKER_REPOSITORY=${{ secrets.DOCKER_REPOSITORY }}" >> ./.env
echo "DATASOURCE_URL_LOCAL=${{ secrets.DATASOURCE_URL_LOCAL }}" >> ./.env
echo "DATASOURCE_USERNAME=${{ secrets.DATASOURCE_USERNAME }}" >> ./.env
echo "DATASOURCE_PASSWORD=${{ secrets.DATASOURCE_PASSWORD }}" >> ./.env
echo "JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }}" >> ./.env
echo "JWT_EXPIRED_IN=${{ secrets.JWT_EXPIRED_IN }}" >> ./.env
echo "REFRESH_TOKEN_EXPIRED_IN=${{ secrets.REFRESH_TOKEN_EXPIRED_IN }}" >> ./.env
echo "KAKAO_CLIENT_KEY=${{ secrets.KAKAO_CLIENT_KEY }}" >> ./.env
echo "KAKAO_REDIRECT_URL=${{ secrets.KAKAO_REDIRECT_URL }}" >> ./.env
echo "KAKAO_REDIRECT_URL_TEST=${{ secrets.KAKAO_REDIRECT_URL_TEST }}" >> ./.env
chmod +x deploy.sh
source deploy.sh