auto deploy 예시

# This is a basic workflow to help you get started with Actions

name: auto deploy example

# Controls when the workflow will run
on:
  # Triggers the workflow on push or pull request events but only for the J14B branch
  push:
    branches: [main]

  # Allows you to run this workflow manually from the Actions tab
  # workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-18.04
    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      - name: Deploy
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USERNAME }}
          password: ${{ secrets.SSH_PASSWORD }}
          port: ${{ secrets.SSH_PORT }}
          script: |
								echo hi

CD용 스크립트(dev 서버에서 실행할 명령어)

# 전제 조건
# dev 서버에 git clone이 된 프로젝트가 있어야 한다.
# .env.production이 서버에 작성되어 있을 것.

cd web04-canyoufixme

git pull origin main

#docker build -t cnh0214/canyoufixme . # docker build
#docker build \
#	-t canyoufixme .

docker build \
        --build-arg API_URL=$API_URL \
        --build-arg CLIENT_ID=$CLIENT_ID \
        --build-arg API_HOST=$API_HOST \
        --build-arg API_PORT=$API_PORT \
        -t canyoufixme .

# docker push cnh0214/canyoufixme # docker push (이미지 docker에 저장)

# docker pull cnh0214/canyoufixme # 

docker stop cyfm # 기존 컨테이너를 끈다.

docker rm cyfm

docker run -it -d -p 3001:3001 -p 80:80 \
	-v packages/backend/.env.production:/app/packages/backend/.env.development
  --name cyfm cnh0214/canyoufixme

#!/bin/bash -e
cd web04-canyoufixme
git pull origin main
docker build \
        --build-arg API_URL=$API_URL \
        --build-arg CLIENT_ID=$CLIENT_ID \
        --build-arg API_HOST=$API_HOST \
        --build-arg API_PORT=$API_PORT \
        --build-arg PM2_PUBLIC_KEY=$PM2_PUBLIC_KEY \
        --build-arg PM2_SECRET_KEY=$PM2_SECRET_KEY \
        -t canyoufixme .
docker stop cyfm
docker rm cyfm
docker run -it -d -p 3001:3001 -p 80:80 \
        -v $PWD/packages/backend/.env.production:/app/packages/backend/.env.production \
        --name cyfm canyoufixme
yes | docker container prune --filter until=24h
yes | docker image prune --filter until=24h

deploy.sh

#!/bin/bash
cd web04-canyoufixme
git pull origin dev
docker build \
        --build-arg API_URL=$API_URL \
        --build-arg CLIENT_ID=$CLIENT_ID \
        -t canyoufixme .
docker stop cyfm
docker rm cyfm
docker run -it -d -p 3001:3001 -p 80:80 \
        -v $PWD/packages/backend/.env.production:/app/.env.production \
        --name cyfm canyoufixme

deploy.yml

name: canyoufixme-auto-deploy
on:
  push:
    branches: [dev]

jobs:
  check-bats-version:
    runs-on: ubuntu-18.04
    steps:
      - name: deploy
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USERNAME }}
          password: ${{ secrets.SSH_PASSWORD }}
          port: ${{ secrets.SSH_PORT }}
          script: |
            cd /root
            echo "${{ secrets.BE_DOT_ENV }}" > ./web04-canyoufixme/packages/backend/.env.production
            API_URL=${{ secrets.API_URL }} CLIENT_ID=${{ secrets.CLIENT_ID }} ./deploy.sh

발생 이슈