设为首页 收藏本站
查看: 675|回复: 0

[经验分享] git自动化部署,测试环境,线上环境

[复制链接]

尚未签到

发表于 2018-9-16 13:28:53 | 显示全部楼层 |阅读模式
  git 自动部署流程图

  服务器端准备工作:
  0. 这些工作都在root或有管理权限的帐号下进行,下面以root为用户,切换到其他用户的时候会提示
  1. 确保安装了git
  2. 为了安全起见,新建一个专门用于代码部署的无特权用户
  useradd -m deployuser
  passwd deployuser        #设置该用户的密码,也可根据喜好配置成免密码登陆
  3. 新建一个目录作为要部署代码的根目录,如:
  mkdir /opt/git/html
  4. 将这个目录的属主和属组都改为上面新建的用户deployuser
  cd /opt/git/html
  chown deployuser:deployuser deploy
  5. 切换到部署代码的专用用户
  su deployuser
  6. 进入项目根目录,初始化为git仓库
  cd deploy
  git init
  7. 【重要】让仓库接受代码提交
  git config receive.denyCurrentBranch ignore
  [可选]  git config core.worktree ~/www
  [可选]  git config --bool receive.denyNonFastForwards false  #禁止强制推送
  至此,一个空的git仓库就在服务器上建好了,仓库的地址为:
  ssh://deployuser@ipaddress/opt/git/html/.git
  8.创建项目运行目录
  mkdir /var/www/html
  cd /var/www/html
  git init
  git remote add origin /opt/git/html/.git
  本地仓库准备工作:
  1. 通过 git clone 或 git pull 从 github 仓库上将代码获取到本地
  2. 将服务器添加到远程仓库列表,使用名字来区分不同的服务器,如测试服务器可以叫做testing
  git remote add testing ssh://deployuser@ipaddress/opt/git/html/.git      3. 将本地代码提交到测试服务器上面
  git push testing master
  回到服务器端:
  1. 更新服务端 git 仓库状态并检出文件
  cd /opt/git/html
  git update-server-info
  git pull origin master
  2. 检查是不是将文件更新进来了
  3. 设置服务器端更新钩子 post-update
  cd .git/hooks
  新建 post-receive 或将 post-receive.sample 重命名为 post-receive
  touch post-receive
  OR:
  mv post-receive.sample post-receive
  vim post-receive
  将如下内容复制到文件中
#!/bin/sh  
unset GIT_DIR
  
cd /var/www/html
  
git pull origin master
  
exit 0
  注: 第3步的操作将post-receive 替换为 post-update也可以, 不过需要先将post-update中的exec git update-server-info这一行删掉
  后续代码的更新:
  1. github 有更新的时候 pull 更新本地部署仓库
  2. 然后本地先 push 到测试服务器进行测试
  3. 测试通过之后 push 到正式服务器进行上线
  4. 代码的回滚:
  *服务器端回滚:推荐      git reset --hard HEAD^
  本地仓库回滚:  无需登陆服务器即可实现代码回滚,git reset HEAD^ 保留代码回滚,然后使用 git push remote_name local_branch_name -f 强制推送
  使用过程中需要注意的问题:
  1. 需要约定好 git 不能更新的操作要怎么处理,比如新增数据库的字段,新安装必要的扩展等,
  2. 充分利用好 git 的钩子功能,比如 pre-commit 可用于提交代码前进行单元测试等,但是钩子做的操作要尽量简单
  git其他操作
  存储当前的版本号,如:git log –pretty -1 | awk ‘/^commit/{print $2}’
  首次提交如果报错By default, updating the current branch in a non-bare repository
  git config receive.denyCurrentBranch ignore


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-584588-1-1.html 上篇帖子: git使用小结 下篇帖子: git与svn 集中式与分布式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表