[fix] 집계기준이 2026을 포함하지 않도록 수정 #378
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: Deploy to RaspberryPi Server | |
| on: | |
| push: | |
| branches: [ main ] | |
| jobs: | |
| build-and-deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v2 | |
| #JDK 셋팅 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v2 | |
| with: | |
| java-version: '17' | |
| distribution: 'adopt' | |
| # application.properties 생성 | |
| - name: Generate application.properties | |
| run: | | |
| envsubst < ./src/main/resources/application.properties.templates > ./src/main/resources/application.properties | |
| env: | |
| MYSQL_URL: ${{ secrets.MYSQL_URL }} | |
| MYSQL_USER: ${{ secrets.MYSQL_USER }} | |
| MYSQL_ROOT_PASSWORD: ${{ secrets.MYSQL_ROOT_PASSWORD }} | |
| JWT_SECRET: ${{ secrets.JWT_SECRET }} | |
| ROOT_DOMAIN_NAME: ${{ secrets.ROOT_DOMAIN_NAME }} | |
| DOMAIN_NAME: ${{ secrets.DOMAIN_NAME }} | |
| FRONT_LOCAL_DOMAIN_NAME: ${{ secrets.FRONT_LOCAL_DOMAIN_NAME }} | |
| KAKAO_CLIENT: ${{ secrets.KAKAO_CLIENT }} | |
| KAKAO_SECRET: ${{ secrets.KAKAO_SECRET }} | |
| ALADIN_TTB_KEY: ${{ secrets.ALADIN_TTB_KEY }} | |
| ALADIN_SERVER_URL: ${{ secrets.ALADIN_SERVER_URL }} | |
| REDIS_PREFIX: ${{secrets.REDIS_PREFIX}} | |
| REDIS_PORT: ${{secrets.REDIS_PORT}} | |
| REDIS_TERMS_KEY: ${{secrets.REDIS_TERMS_KEY}} | |
| GOOGLE_CLIENT: ${{secrets.GOOGLE_CLIENT}} | |
| GOOGLE_SECRET: ${{secrets.GOOGLE_SECRET}} | |
| APPLE_AUD : ${{secrets.APPLE_AUD}} | |
| APPLE_TEAM_ID : ${{secrets.APPLE_TEAM_ID}} | |
| APPLE_KEY_ID : ${{secrets.APPLE_KEY_ID}} | |
| # AuthKey.p8 파일 생성 | |
| - name: Create AuthKey.p8 | |
| run: | | |
| echo "${{ secrets.APPLE_AUTH_KEY }}" > ./src/main/resources/key/AuthKey.p8 | |
| #프로젝트 빌드 | |
| - name: Build with Gradle | |
| run: | | |
| chmod +x ./gradlew | |
| ./gradlew build -x test | |
| #도커허브 로그인 | |
| - name: Login to DockerHub | |
| uses: docker/login-action@v1 | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| #도커이미지 빌드&푸쉬 | |
| - name: Build and push Docker image | |
| uses: docker/build-push-action@v3 | |
| with: | |
| context: . | |
| push : true | |
| platforms: linux/arm64 | |
| tags: ${{ secrets.DOCKERHUB_USERNAME }}/bbegok:latest | |
| #env 셋팅 | |
| - name: Create .env file | |
| run: | | |
| envsubst < ./configuration/.env.template > ./configuration/.env | |
| env: | |
| DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} | |
| DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} | |
| MYSQL_URL: ${{ secrets.MYSQL_URL }} | |
| MYSQL_USER: ${{ secrets.MYSQL_USER }} | |
| MYSQL_PASSWORD: ${{ secrets.MYSQL_PASSWORD }} | |
| MYSQL_ROOT_PASSWORD: ${{ secrets.MYSQL_ROOT_PASSWORD }} | |
| DOMAIN_NAME: ${{ secrets.DOMAIN_NAME }} | |
| SSL_CERT_PATH: ${{ secrets.SSL_CERT_PATH }} | |
| SSL_CERTIFICATE: ${{ secrets.SSL_CERTIFICATE }} | |
| SSL_CERTIFICATE_KEY: ${{ secrets.SSL_CERTIFICATE_KEY }} | |
| DD_API_KEY: ${{ secrets.DD_API_KEY }} | |
| ANALYTICS_DOMAIN_NAME : ${{secrets.ANALYTICS_DOMAIN_NAME}} | |
| #nginx.config 셋팅 | |
| - name: Create nginx.conf from template | |
| run: | | |
| envsubst '${DOMAIN_NAME} ${SSL_CERTIFICATE} ${SSL_CERTIFICATE_KEY} ${ANALYTICS_DOMAIN_NAME}' < ./configuration/nginx.conf.template > ./configuration/nginx.conf | |
| env: | |
| DOMAIN_NAME: ${{ secrets.DOMAIN_NAME }} | |
| SSL_CERTIFICATE: ${{ secrets.SSL_CERTIFICATE }} | |
| SSL_CERTIFICATE_KEY: ${{ secrets.SSL_CERTIFICATE_KEY }} | |
| ANALYTICS_DOMAIN_NAME : ${{secrets.ANALYTICS_DOMAIN_NAME}} | |
| #configuration/이하의 파일을 서버로 복사 | |
| - name: Copy files to Raspberry Pi | |
| uses: appleboy/scp-action@master | |
| with: | |
| host: ${{ secrets.PI_HOST }} | |
| port: ${{ secrets.PI_PORT }} | |
| username: ${{ secrets.PI_USERNAME }} | |
| password: ${{ secrets.PI_PASSWORD }} | |
| source: "./configuration/*" | |
| target: "Project/bbaegok/prod/" | |
| strip_components: 1 | |
| - name: Deploy Blue-Green to Raspberry Pi | |
| uses: appleboy/ssh-action@master | |
| with: | |
| host: ${{ secrets.PI_HOST }} | |
| port: ${{ secrets.PI_PORT }} | |
| username: ${{ secrets.PI_USERNAME }} | |
| password: ${{ secrets.PI_PASSWORD }} | |
| script: | | |
| cd Project/bbaegok/prod/ | |
| # 현재 실행중인 app color 확인 | |
| if docker ps --filter "name=app_blue" --filter "status=running" | grep app_blue; then | |
| CURRENT="blue" | |
| NEXT="green" | |
| else | |
| CURRENT="green" | |
| NEXT="blue" | |
| fi | |
| echo "Current active app: $CURRENT" | |
| echo "Deploying next app: $NEXT" | |
| ACTIVE_COLOR=$NEXT envsubst '${ACTIVE_COLOR}' < nginx.conf > nginx_final.conf | |
| mv nginx_final.conf nginx.conf | |
| docker-compose pull app_${NEXT} | |
| docker-compose up -d app_${NEXT} | |
| echo "[(임시) 대기 중 - 3min]" | |
| sleep 180 | |
| docker-compose up -d --no-deps --build nginx | |
| docker-compose stop app_${CURRENT} | |
| - name: Discord Webhook when success | |
| if: success() | |
| env: | |
| DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} | |
| uses: Ilshidur/action-discord@master | |
| with: | |
| args: | | |
| ## **:tada: 빼곡서버 배포 SUCCESS!** | |
| - name: Discord Webhook when fail | |
| if: failure() | |
| env: | |
| DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} | |
| uses: Ilshidur/action-discord@master | |
| with: | |
| args: | | |
| ## **:fire: 빼곡서버 배포 FAIL!** | |
| **message** | ${{ github.event.head_commit.message }} | |
| **commit** | ${{ github.sha }} | |
| **go to log** | ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} |