#Day39 자동배포 프론트만

D0-$ANG ₩0N·2025년 12월 28일
post-thumbnail


Add README off

git 설치 확인 및 설치

git --version
brew install git # Mac

프로젝트 폴더에서 git 실행하기

cd reactFront1

git 초기화

git init

github 저장소 만들기

  1. gitHub 접속
  2. New repository
  3. 이름 프로젝트이름아무거나
  4. README / .gitignore 체크x
  5. Create repository 생성

프로젝트와 github연결 (터미널에서)

git remote add origin https://github.com/seongbokim/reactbuild.git
git remote add origin https://github.com/seongbokim/fastapi.git

확인

git remote -v

상태 확인

git status

추가

git add .

커밋

git commit -m "initial commit"

github에 올리기

git branch -M main
git push -u origin main

2. yaml파일 만들기

name: React Deploy via Bastion

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout source
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 18
          cache: npm

      - name: Install dependencies
        run: npm ci

      - name: React 파일 빌드
        run: npm run build

      - name: ssh 키 접속
        run: |
          mkdir -p ~/.ssh
          echo "${{ secrets.BASTION_SSH_KEY }}" > ~/.ssh/deploy.key
          chmod 600 ~/.ssh/deploy.key

          ssh-keyscan -T 5 -H ${{ secrets.BASTION_HOST }} >> ~/.ssh/known_hosts || true
          
      - name: bastion에 파일 업로드
        run: |
          ssh -i ~/.ssh/deploy.key \
            ${{ secrets.BASTION_USER }}@${{ secrets.BASTION_HOST }} \
            "mkdir -p ~/dist && rm -rf ~/dist/*"

          rsync -avz \
            -e "ssh -i ~/.ssh/deploy.key" \
            dist/ \
            ${{ secrets.BASTION_USER }}@${{ secrets.BASTION_HOST }}:~/dist/

      - name: bastion에서 nginx로 파일 이동 후 재시작
        run: |
          ssh -i ~/.ssh/deploy.key \
            ${{ secrets.BASTION_USER }}@${{ secrets.BASTION_HOST }} "
              rsync -avz ~/dist/ nginx2a:/home/ubuntu/dist/ &&
              ssh nginx2a '
                sudo rm -rf /var/www/react/* &&
                sudo cp -r /home/ubuntu/dist/* /var/www/react/ &&
                sudo systemctl reload nginx
              '
            "
jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout source
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 18
          cache: npm

      - name: Install dependencies
        run: npm ci

      - name: React 파일 빌드
        run: npm run build

      - name: ssh 키 접속
        run: |
          mkdir -p ~/.ssh
          echo "${{ secrets.BASTION_SSH_KEY }}" > ~/.ssh/deploy.key
          chmod 600 ~/.ssh/deploy.key

          ssh-keyscan -T 5 -H ${{ secrets.BASTION_HOST }} >> ~/.ssh/known_hosts || true
          
      - name: bastion에 파일 업로드
        run: |
          ssh -i ~/.ssh/deploy.key \
            ${{ secrets.BASTION_USER }}@${{ secrets.BASTION_HOST }} \
            "mkdir -p ~/dist && rm -rf ~/dist/*"

          rsync -avz \
            -e "ssh -i ~/.ssh/deploy.key" \
            dist/ \
            ${{ secrets.BASTION_USER }}@${{ secrets.BASTION_HOST }}:~/dist/

      - name: bastion에서 nginx로 파일 이동 후 재시작
        run: |
          ssh -i ~/.ssh/deploy.key \
            ${{ secrets.BASTION_USER }}@${{ secrets.BASTION_HOST }} "
              rsync -avz ~/dist/ nginx2a:/home/ubuntu/dist/ &&
              ssh nginx2b '
                sudo rm -rf /usr/share/nginx/html/* &&
                sudo cp -r /home/ubuntu/dist/* /usr/share/nginx/html/ &&
                sudo systemctl reload nginx 
              '
            "


초록불 확인

profile
Change Up

0개의 댓글