Git은 정말 훌륭한 도구이다. 현재로썬 버전관리의 끝판왕? 인지라..
쓰기는 쉽지만, 잘쓰기는 어려울 툴이다.ㅠㅠ
원격 깃 저장소로부터 실제 운영 서버로 디플로이를 해야할 때,
자동화 스크립트는 생성하는 방법이다. 추가로 hook같은 건 제외하겠다.
레파지토리 path : /home/www/repos/mysite.git
디플로이 path : /home/www/html
서버의 로컬 레파지토리 생성
--bare 는 소스파일없는 .git폴더($GIT_DIR)로써, 이력만 관리한다는 뜻(remote정보가 없음, fetch시 메인 리포를 지정필요)
--mirror 도 --bare에 추가로 remote정보가 포함됨
cd /home/www
mkdir repos && cd repos
git clone --mirror ssh://git@source.address/mysite
git config remote.origin.fetch 'refs/heads/*:refs/heads/*'
--mirror은 모든 브랜치를 가져오도록 되어 있으므로, head만 fetch하도록 config를 변경해준다.
--bare로 가져와서, remote origin를 추가해줘도 된다.
쉘 스크립트
#!/bin/sh
git --git-dir=/home/www/repos/mysite.git fetch
git --work-tree=/home/www/html --git-dir=/home/www/repos/mysite.git checkout -f
혹은
#!/bin/sh
cd /home/www/repos/mysite.git
git fetch
GIT_WORK_TREE=/home/www/html git checkout -f
실제로 자동화된 디플로이를 원한다면, hook을 사용해야 한다.
다음엔 hook post-receive를 사용해보자.
'dev > linux' 카테고리의 다른 글
centos install crontab (0) | 2017.07.11 |
---|---|
centos python3 설치하기 (0) | 2017.06.23 |
mysql datadir 변경 (0) | 2016.10.02 |
[CentOS 7] firewalld 사용하기 (0) | 2016.07.01 |
[nginx] add or remove www domain (0) | 2016.02.17 |