Skip to content

chore: update cd.yml #29

chore: update cd.yml

chore: update cd.yml #29

Workflow file for this run

name: Deploy
on:
workflow_dispatch:
push:
branches: ["develop"]
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
# 1. checkout develop branch
- name: Checkout develop
uses: actions/checkout@v3
with:
ref: develop
# 2. Docker 로그인
- name: Login to Docker Hub
run: |
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
# 3. 이미지 build 및 push
- name: Build and Push Docker image
run: |
docker build -t ${{ secrets.DOCKER_USERNAME }}/gotcha-ai:latest .
docker push ${{ secrets.DOCKER_USERNAME }}/gotcha-ai:latest
deploy:
needs: build-and-push
runs-on: ubuntu-latest
steps:
# 1. checkout branch
- name: Check PR
uses: actions/checkout@v3
# 2. EC2 pull
- name: EC2 Docker Deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_HOST }}
port: ${{ secrets.SERVER_SSH_PORT }}
username: ${{ secrets.SERVER_USERNAME }}
key: ${{ secrets.SERVER_PRIVATE_KEY }}
script: |
cd ~/ai-server
docker stop ai-server || true
docker rm ai-server || true
docker system prune -a -f || true
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
docker pull ${{ secrets.DOCKER_USERNAME }}/gotcha-ai:latest
docker run -d \
--name ai-server \
--env-file .env \
-p 8000:8000 \
${{ secrets.DOCKER_USERNAME }}/gotcha-ai:latest
notify:
needs: deploy
runs-on: ubuntu-latest
steps:
- name: Notify Deployment
uses: slackapi/slack-github-action@v2
with:
channel-id: ${{ secrets.SLACK_CHANNEL_ID }}
payload: |
{
"text": "🚀 *배포 완료* on `${{ github.ref_name }}`",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Status:* `${{ job.status }}`\n*Commit:* <${{ github.server_url }}/${{ github.repository }}/commit/${{ github.sha }}|${{ github.sha }}>\n*Actor:* ${{ github.actor }}"
}
}
]
}
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}