서버 Server

리눅스 cron job을 이용한 자동 배포 - Git Auto Pull

은둔한량 2024. 10. 28. 11:06
반응형

원격 git repo에서 pull을 자동으로 받아오도록 하고 싶다. ㅎㅎ 

매번 서버에 가서 pull 을 하기가 귀찮다.

여러가지 방법이 있지만 리눅스의 cron job 을 이용한 방법이다.

우선 sell script를 작성한다.

vi auto_pull.sh를 아래와 같이 작성한다.

#!/bin/bash
echo '---cron 실행---'
cd /home/user/project
git fetch origin dev
git pull origin dev

lastCommit=$(cat /home/user/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/user/last-commit.info
fi

 

crontab -e  클론잡에 추가를 한다.

*/5 * * * * /home/user/auto_pull.sh >> /home/user/auto_pull.sh.log 2>&1

5분마다 실행이 되어서 자동으로 원격 git repo 에서 pull을 땡겨온다. ^^

root crontab 에서 일반 계정의  pull 을 실행하고자 하면

su - user(일반계정) -c "실행 파일"  이렇게 하면 된다.

*/5 * * * * su - user -c /home/user/auto_pull.sh >> /home/user/auto_pull.sh.log 2>&1

 

다음에는 github의 action을 이용하는 방법을 알아봐야겠다.

반응형