通过 Git 部署到不同的 Web 服务器
Deploying to Different Web Servers via Git
远程 Git 存储库是否可以根据分支名称部署到多个 Web 服务器(例如,登台服务器和生产服务器)(如果可以,这是一种好的做法)吗?例如,如果开发人员 A 将提交推送到远程分支 STAGING
,该提交将部署到相应的登台 Web 服务器,而对分支 MASTER
的提交(或合并)将部署到生产服务器。
这是否说明了 good/reliable 工作流程?如果不是,什么是更好的方法?
是的,我以前看过(就像我的previous answer from 2012)
至get the branch name,使用:
branch=$(git rev-parse --symbolic --abbrev-ref $refname)
然后就可以推送到正确的服务器了
if [ "master" == "$branch" ]; then
git push production
echo 'Changes pushed live.'
fi
if [ "staging" == "$branch" ]; then
git push staging
echo 'Changes pushed to staging.'
fi
假设有两个遥控器,每个遥控器都引用一个远程裸仓库。
目标裸仓库将有一个 post-receive
挂钩:
git --work-tree=/path/under/root/dir/site/ checkout -f $branch
远程 Git 存储库是否可以根据分支名称部署到多个 Web 服务器(例如,登台服务器和生产服务器)(如果可以,这是一种好的做法)吗?例如,如果开发人员 A 将提交推送到远程分支 STAGING
,该提交将部署到相应的登台 Web 服务器,而对分支 MASTER
的提交(或合并)将部署到生产服务器。
这是否说明了 good/reliable 工作流程?如果不是,什么是更好的方法?
是的,我以前看过(就像我的previous answer from 2012)
至get the branch name,使用:
branch=$(git rev-parse --symbolic --abbrev-ref $refname)
然后就可以推送到正确的服务器了
if [ "master" == "$branch" ]; then
git push production
echo 'Changes pushed live.'
fi
if [ "staging" == "$branch" ]; then
git push staging
echo 'Changes pushed to staging.'
fi
假设有两个遥控器,每个遥控器都引用一个远程裸仓库。
目标裸仓库将有一个 post-receive
挂钩:
git --work-tree=/path/under/root/dir/site/ checkout -f $branch