Skip to content

auto-cd(dev)

auto-cd(dev) #79

Workflow file for this run

name: auto-cd(dev)
on:
workflow_dispatch:
inputs:
dev_command:
type: choice
required: true
description: 'dev command'
options:
- yarn dev
env:
SERVER_HOST: ${{ secrets.DEV_SERVER_HOST }}
SERVER_USER: ${{ secrets.DEV_SERVER_USER }}
SERVER_SSH_KEY: ${{ secrets.DEV_SERVER_SSH_KEY }}
SERVER_SSH_PASSPHRASE: ${{ secrets.DEV_SERVER_SSH_PASSPHRASE }}
DEPLOY_PATH: choose-tale/Backend
BRANCH: ${{github.ref_name}}
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: echo env
run: |
echo ${{ env.DEPLOY_PATH }}
echo ${{ env.BRANCH }}
- name: create env
run: |
echo "${{ secrets.DEV_CONFIG }}" > src/config/docker.development.ts
- name: aws login
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: aws ecr get-login-password
id: login-password
run: |
aws ecr get-login-password --region ${{ secrets.AWS_REGION }} | docker login --username AWS --password-stdin ${{ secrets.AWS_ECR_URI }}
- name: aws ecr build
run: |
docker build -f dev.dockerfile -t ${{ secrets.AWS_ECR_URI }}/choosetale:backend .
- name: aws ecr push
run: |
docker push ${{ secrets.AWS_ECR_URI }}/choosetale:backend
- name: Set up SSH key with passphrase
uses: webfactory/[email protected]
with:
ssh-private-key: ${{ env.SERVER_SSH_KEY }}
ssh-passphrase: ${{ env.SERVER_SSH_PASSPHRASE }}
- name: 원격 서버에 배포
run: |
ssh -o StrictHostKeyChecking=no ${{ env.SERVER_USER }}@${{ env.SERVER_HOST }} << 'EOF'
aws ecr get-login-password --region ${{ secrets.AWS_REGION }} | docker login --username AWS --password-stdin ${{ secrets.AWS_ECR_URI }}
docker ps -q --filter "name=choosetale-backend" | grep -q . && docker rm -f choosetale-backend || echo "컨테이너가 없습니다."
docker images ${{ secrets.AWS_ECR_URI }}/choosetale:backend && docker rmi ${{ secrets.AWS_ECR_URI }}/choosetale:backend || echo "이미지가 없습니다."
docker pull ${{ secrets.AWS_ECR_URI }}/choosetale:backend
docker run -d -p 5001:5001 -p 5002:5002 -e NODE_ENV=development --net choosetale-network --name choosetale-backend ${{ secrets.AWS_ECR_URI }}/choosetale:backend
docker-compose -f dev.docker-compose.yml up -d
EOF
- name: 슬랙 메시지 전송
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_CI_CHANNEL_WEBHOOK }}
run: |
curl -X POST -H 'Content-type: application/json' --data '{"text":"백엔드 배포가 완료되었습니다. port: 5001 , branch: ${{ env.BRANCH }}"}' $SLACK_WEBHOOK_URL
- name: SSH 키 정리
run: rm -rf ~/.ssh