Skip to content

[fix] 집계기준이 2026을 포함하지 않도록 수정 #378

[fix] 집계기준이 2026을 포함하지 않도록 수정

[fix] 집계기준이 2026을 포함하지 않도록 수정 #378

Workflow file for this run

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 }}