hotfix : 양방향 매핑에 의한 유저 생성 실패 오류 해결 #74
This file contains hidden or 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
| 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 | |