

Add README off
git --version
brew install git # Mac
cd reactFront1
git init
프로젝트이름아무거나
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"
git branch -M main
git push -u origin main
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
'
"

초록불 확인