Skip to content

🐛 [fix] 400 에러 핸들링 및 중복 호출 방지 #85

🐛 [fix] 400 에러 핸들링 및 중복 호출 방지

🐛 [fix] 400 에러 핸들링 및 중복 호출 방지 #85

Workflow file for this run

# github repository actions 페이지에 나타날 이름
name: CD for front using github actions
on:
release:
types: [created]
permissions:
contents: read
jobs:
front-cd:
runs-on: ubuntu-latest
steps:
# 저장소 코드를 체크아웃합니다. (PR 올린 코드를 가져오는 행위)
- uses: actions/checkout@v4
with:
ref: release
# Node.js 환경 설정
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: 22 # 지정된 Node.js 버전 사용
cache: npm # setup-node 의 캐시 기능을 사용함
cache-dependency-path: package-lock.json # 캐시 기능을 사용할 때 캐시의 기준이 될 파일을 지정
- name: Extract release version
id: version
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- name: Install Dependencies
run: npm install
- name: Build with npm
run: npm run build-only
- name: Create nginxfile.conf
run: touch ./nginxfile.conf
- run: echo "${{ secrets.NGINX_FILE_CONF }}" > ./nginxfile.conf
- name: Create Develop nginx.conf
run: touch ./nginx.conf
- run: echo "${{ secrets.NGINX_CONF }}" > ./nginx.conf
# docker build & push to develop
- name: Docker build & push develop
run: |
docker login clap.kr-central-2.kcr.dev -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
docker build -t ${{ secrets.DOCKER_FRONT_REPO }} .
docker push ${{ secrets.DOCKER_FRONT_REPO }}
# deploy
- name: Deploy Develop
uses: appleboy/ssh-action@master
id: deploy develop
with:
host: ${{ secrets.FRONT_HOST }}
username: ${{ secrets.FRONT_HOST_USERNAME }}
key: ${{ secrets.FRONT_HOST_KEY }}
port: ${{ secrets.FRONT_HOST_PORT }}
script: |
docker rm -f taskflow-front
docker image rm -f ${{ secrets.DOCKER_FRONT_REPO }}
docker run --name taskflow-front -d -p 80:80 -p 443:443 -v /etc/letsencrypt/:/etc/letsencrypt/ -v /etc/ssl/:/etc/ssl/ --restart on-failure ${{ secrets.DOCKER_FRONT_REPO }}
- name: Create Production nginx.conf
- run: echo "${{ secrets.PROD_NGINX_CONF }}" > ./nginx.conf
# docker build & push to production
- name: Docker build & push production
run: |
docker build -t ${{ secrets.DOCKER_FRONT_REPO }}:${{ steps.version.outputs.VERSION }} .
docker push ${{ secrets.DOCKER_FRONT_REPO }}:${{ steps.version.outputs.VERSION }}
- name: Update Kubernetes Deployment
run: |
envsubst < ./taskflow.yaml
env:
IMAGE_TAG: ${{ env.IMAGE_TAG }}
# deploy
- name: Transport taskflow.yaml to kubectl server
uses: appleboy/scp-action@master
with:
host: ${{ secrets.KUBE_HOST }}
username: ${{ secrets.KUBE_HOST_USERNAME }}
key: ${{ secrets.KUBE_HOST_KEY }}
port: ${{ secrets.KUBE_HOST_PORT }}
overwrite: true
source: ./taskflow.yaml
target: ~/taskflow-front.yaml
- name: Deploy Prod
uses: appleboy/ssh-action@master
id: deploy prod
with:
host: ${{ secrets.KUBE_HOST }}
username: ${{ secrets.KUBE_HOST_USERNAME }}
key: ${{ secrets.KUBE_HOST_KEY }}
port: ${{ secrets.KUBE_HOST_PORT }}
script: |
kubectl apply --filename taskflow-front.yaml