Skip to content

CD - Deploy to GCE Instances #21

CD - Deploy to GCE Instances

CD - Deploy to GCE Instances #21

Workflow file for this run

name: CD - Deploy to Server via SSH
on:
workflow_dispatch: # ✅ 수동 실행 지원
workflow_run:
workflows: ["CI - Upload Compose & Traefik Files"] # CI 워크플로우 이름
types:
- completed
jobs:
deploy:
if: ${{ github.event.workflow_run.conclusion == 'success' }}
runs-on: ubuntu-latest
environment: production
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: List files for debug
run: ls -al
- name: Upload docker-compose file to server
uses: appleboy/scp-action@v0.1.4
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_PEM_KEY }}
source: .
target: /home/ubuntu/app
- name: Connect & Deploy via SSH
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_SSH_KEY }}
script: |
export SECRET_KEY="${{ secrets.SECRET_KEY }}"
export MYSQL_USER="${{ secrets.MYSQL_USER }}"
export MYSQL_PASSWORD="${{ secrets.MYSQL_PASSWORD }}"
export MYSQL_DATABASE="${{ secrets.MYSQL_DATABASE }}"
export MYSQL_ROOT_PASSWORD="${{ secrets.MYSQL_ROOT_PASSWORD }}"
export AWS_ACCESS_KEY="${{ secrets.AWS_ACCESS_KEY }}"
export AWS_SECRET_KEY="${{ secrets.AWS_SECRET_KEY }}"
export AWS_S3_BUCKET_NAME="${{ secrets.AWS_S3_BUCKET_NAME }}"
export AWS_S3_REGION="${{ secrets.AWS_S3_REGION }}"
export GOOGLE_APPLICATION_CREDENTIALS="${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }}"
export RABBITMQ_USER="${{ secrets.RABBITMQ_USER }}"
export RABBITMQ_PASSWORD="${{ secrets.RABBITMQ_PASSWORD }}"
cd /home/ubuntu/app
docker compose -f docker-compose.backend.yml pull
docker compose -f docker-compose.portainer.yml down
docker compose -f docker-compose.traefik.yml up -d --build