dev/linux

깃 디플로이 (Deployment from Git)

재삐신생 2017. 3. 1. 15:39
반응형

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