티스토리 뷰
728x90
SMALL
리눅스에서는 원하는 시간마다 특정 명령어를 실행할 수 있게 해주는 크론탭이라는게 존재한다. 이를 이용해서 git에서 pull을 받아오고 만약 받아왔다면 자동으로 받아오고 배포를 할 수 있다.
vi deploy.sh를 해서 아래와 같이 작성한다.
#!/bin/bash
echo '---cron 실행---'
cd /home/ubuntu/cashbook-03
git fetch origin main
git pull origin main
lastCommit=$(cat /home/ubuntu/last-commit.info)
current=$(git rev-parse origin)
if [[ $current != $lastCommit ]];
then
echo '---커밋변경 배포절차 실행---'
echo '---client build---'
cd ./client
sudo npm i
sudo npm run build
sudo cp -r dist/* /var/www/html/
sudo service nginx restart
echo '---server build---'
cd ../server
sudo npm i
sudo npm run build
echo '---pm2 reload account---'
sudo pm2 reload all
# 기존 커밋 덮어쓰기
echo '---update lastCommit.info---'
echo $current > /home/ubuntu/last-commit.info
fi
위 코드로 lastcommit과 현재커밋을 비교해서 다른경우에만 재배포를 하는것이다. pm2는 클러스터링 모드 reload를 사용해서 무중단배포(? 사실 됬는지 잘 모르겠다)를 했다. nginx는 나중에 찾아봐서 수정하겠다.
그리고 crontab-e 를 입력하고
5 * * * * /home/ubuntu/deploy.sh >> /home/ubuntu/deploy.sh.log 2>&1
이렇게 입력하면 5분에 한번씩 deploy.sh를 실행하고 로그를 deploy.sh.log에 쌓는다. 세부적인 명령어는 생략하겠다. 마지막은 리눅스 명령어고 처음에는 시간을 지정해준느 명령어다.
728x90
LIST
'devops' 카테고리의 다른 글
npm 배포하기 (0) | 2021.11.02 |
---|---|
github action으로 ec2에 자동배포하기3 (5) | 2021.10.18 |
github action으로 ec2에 자동배포하기2 (0) | 2021.10.18 |
github action으로 ec2에 자동배포하기1 (2) | 2021.10.18 |
nginx에 웹서버 띄우기(spa) (0) | 2021.08.07 |
댓글
공지사항