Skip to content

#90 chatforyou 서버 scaleout 대응 :: 쿠키 setHeader 대신 addHeader 로 변경 #68

#90 chatforyou 서버 scaleout 대응 :: 쿠키 setHeader 대신 addHeader 로 변경

#90 chatforyou 서버 scaleout 대응 :: 쿠키 setHeader 대신 addHeader 로 변경 #68

name: CI/CD Pipeline with GitHub Actions for K8S
on:
push:
branches: [ "infra/cicd-test", "chatforyou_v2", "feat/90"]
# branches: [ "master-webrtc-catchmind", "infra/cicd-test" ]
# pull_request:
# branches: [ "master" ]
jobs:
changes:
runs-on: ubuntu-latest
outputs:
backend: ${{ steps.filter.outputs.backend }}
frontend: ${{ steps.filter.outputs.frontend }}
steps:
- uses: actions/checkout@v2
- name: Filter changes
id: filter
uses: dorny/paths-filter@v3
with:
filters: |
backend:
- 'springboot-backend/**'
frontend:
- 'nodejs-frontend/**'
backend-deploy:
name: Build And Deploy Backend K8S
needs: changes
if: needs.changes.outputs.backend == 'true'
environment: chatforyou-back-env
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
env:
KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }}
K8S_NAMESPACE: chatforyou
DEPLOYMENT_NAME: chatforyou-v03
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Configure Kubeconfig
run: |
mkdir -p ${HOME}/.kube
echo "${KUBE_CONFIG}" | base64 --decode > ${HOME}/.kube/config
export KUBECONFIG=${HOME}/.kube/config
- name: Generate TIMESTAMP in KST
id: timestamp
run: |
export TZ=Asia/Seoul
TIMESTAMP=$(date '+%Y%m%d%H%M%S')
echo "TIMESTAMP=$TIMESTAMP" >> $GITHUB_ENV
echo "IMAGE_URI=ghcr.io/sejonj/chatforyou:$TIMESTAMP" >> $GITHUB_ENV
- name: Build Docker Image
run: |
cd springboot-backend
docker build --file Dockerfile -t $IMAGE_URI .
cd ..
- name: Push Docker Image to GitHub Packages
run: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
docker push $IMAGE_URI
- name: Deploy to Kubernetes
run: |
kubectl set image deployment/$DEPLOYMENT_NAME \
chatforyou-container=$IMAGE_URI \
-n $K8S_NAMESPACE
kubectl rollout status deployment/$DEPLOYMENT_NAME -n $K8S_NAMESPACE
frontend-deploy:
name: Build And Deploy Frontend K8S
needs: changes
if: needs.changes.outputs.frontend == 'true'
environment: chatforyou-back-env
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
env:
KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }}
K8S_NAMESPACE: chatforyou
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Configure Kubeconfig
run: |
mkdir -p ${HOME}/.kube
echo "${KUBE_CONFIG}" | base64 --decode > ${HOME}/.kube/config
export KUBECONFIG=${HOME}/.kube/config
- name: Generate TIMESTAMP in KST
id: timestamp
run: |
export TZ=Asia/Seoul
TIMESTAMP=$(date '+%Y%m%d%H%M%S')
echo "TIMESTAMP=$TIMESTAMP" >> $GITHUB_ENV
echo "FRONT_IMAGE_URI=ghcr.io/sejonj/chatforyou-frontend:$TIMESTAMP" >> $GITHUB_ENV
- name: Build Frontend Docker Image
run: |
cd nodejs-frontend
docker build -t $FRONT_IMAGE_URI .
cd ..
- name: Push Frontend Docker Image
run: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
docker push $FRONT_IMAGE_URI
- name: Deploy Frontend to Kubernetes
run: |
FRONT_DEPLOYMENT_NAME=chatforyou-frontend-v03
kubectl set image deployment/$FRONT_DEPLOYMENT_NAME \
chatforyou-frontend-container=$FRONT_IMAGE_URI \
-n $K8S_NAMESPACE
kubectl rollout status deployment/$FRONT_DEPLOYMENT_NAME -n $K8S_NAMESPACE