前言
这个版本更新发布架构不是最好的,是根据实际环境和需求构建的是一个可行稳定的架构,该架构基于git且只需要git的一点点功能就可以实现。
- 用一台服务器担当
git server
的角色,所有项目的代码均在上面提交和更新。 - 测试环境和正式环境用的代码均从
git server
获取(在本地用git pull
命令从git server
上面拉到本地的某个目录,这些动作在主要由salt来完成)。 - 为了保证代码更新的实时性,本地代码不直接拉到正式环境的目录B,而是采用了折中的方法先
git pull
到本地正式环境服务器临时目录A,然后再用rsync命令将目录A同步到本地正式环境目录B。
git server 设置
1、git init
初始化一个版本库,用于提交更新的代码(即个人使用的版本库)。
1 | $ git init strong.work |
2、git init --bare
初始化一个空的版本库,以后用于向各个线上、测试、开发等提供pull、push 服务的固定版本库(即共用的库、远程库)。
1 | $ git init --bare strong.server |
3、安装git-Daemon服务,通过网络向各个客户端提供pull、push等服务。
1 | $ yum install git-daemon |
服务已经成功在后台运行,可以看到已经在监听指定的端口了。此时防火墙要开放9400端口(端口号没有特别的需求,只要与git pull时一致即可)。
4、客服端(线上正式或测试环境的代码目录)也要按照第一步的操作git init初始化一个版本库,用于git pull接收代码(即个人使用的版本库,后面有示例)。
流程演示
演示一个文件从git server服务器的stong.work目录添加提交然后push到stong.server目录,最后客户端将文件pull到本地目录的过程。
向strong.work目录添加一个文件test
1 | $ echo " this is test" > test |
添加新增文件的索引
1 | $ git add . |
显示状态
1 | git status |
向仓库提文件的改变(提示没有设置使用者的用户名及邮箱,可以按提示命令设置。)
1 | $ git commit -a -m 'test' |
将改变提交到远程库strong.server(strong.work和strong.server可以在同一台主机)
1 | $ git push /opt/git/strong/strong.server/ master |
登录客户端(线上正式或测试环境的代码目录)主机第一次pull时需要初始化一个git库
1 | $ git init strong.git |