Git Hook을 사용하여 서버를 자동으로 배포하는 방법은 무엇입니까?
최근에 개인 사이트를 만들었는데 서버에 올릴 때 매번 업데이트된 내용을 FTP나 다른 파일 전송 방식으로 하나씩 서버에 올리는 것은 정말 번거롭다. 더 좋고 더 빨리 배치를 완성할 수 있는 방법이 없을까?
Git Hooks(Git 갈고리)를 사용하면 이 정도는 할 수 있습니다.Git Hooks가 뭐예요?'Git는 특정한 중요한 동작이 발생할 때 사용자 정의 스크립트를 터치할 수 있다'. 예를 들어
pre-commit
, post-receive
등은 이러한 동작 이전이나 이후에 정의된 스크립트를 실행한다.자동 배치를 하려면 이것post-receive
을 사용해야 한다.자동 배치를 설정하기 전에 비밀번호 없이 원격 서버에 로그인하도록 설정해야 합니다. 구체적인 조작은 이 글을 참고하십시오.[SSH Key 암호 없이 서버에 로그인]
자동 배포
전체 프로세스는 대개 서버에 Git 창고(repository)를 만들고 로컬 파일 사용
git push
을 이 창고에 업로드하면 Git 창고에 업로드된 파일을 서버에서 웹 페이지가 실행되는 폴더로 자동으로 복사합니다.git init --bare website.git
post-receive
파일cd website.git
vim hooks/post-receive
다음 내용을
post-receive
파일에 복사#!/bin/bash -l
GIT_REPO=/home/git/website.git
TMP_GIT_CLONE=/tmp/website
PUBLIC_WWW=/var/www/zhuangweiming.me/html
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
cd $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}
코드 설명:
rm -rf ${TMP_GIT_CLONE}
임시 경로 안의 내용 비우기 git clone $GIT_REPO $TMP_GIT_CLONE
Git 창고의 내용을 임시 경로로 복제하기 rm -rf ${PUBLIC_WWW}/*
서버 웹 저장소 폴더 비우기 cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}
임시 경로의 파일을 서버 웹 저장소 경로로 복사하기post-receive
파일에 대한 권한 부여chmod +x hooks/post-receive
git remote add deploy ssh://[email protected]/home/git/website.git
git push deploy
지정된 Git branch 자동 배포
특정 Branch를 배포하려면 위의 두 번째 섹션에서
post-receive
의 파일 내용을 다음으로 바꿉니다.#!/bin/bash -l
while read oldrev newrev ref
do
branch=`echo $ref | cut -d/ -f3`
if [ "master" == "$branch" ] || [ "production" == "$branch" ]; then
GIT_REPO=/home/git/website.git
TMP_GIT_CLONE=/tmp/website
PUBLIC_WWW=/var/www/zhuangweiming.me/html
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
cd $TMP_GIT_CLONE
unset GIT_DIR
git checkout $branch
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}
fi
done
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.