版本更新发布WEB化(1)_构建基于git的更新发布架构

这个版本更新发布架构不是最好的,是根据实际环境和需求构建的是一个可行稳定的架构,该架构基于git且只需要git的一点点功能就可以实现。
1、用一台服务器担当git server的角色,所有项目的代码均在上面提交和更新
2、测试环境和正式环境用的代码均从git server获取(在本地用git pull 命令从git server上面拉到本地的某个目录,这些动作在主要由salt来完成)。
3、为了保证代码更新的实时性,本地代码不直接拉到正式环境的目录B,而是采用了折中的方法先git pull到本地正式环境服务器临时目录A,然后再用rsync命令将目录A同步到本地正式环境目录B。

1)git server可以这样设置:

1、git init 初始化一个版本库,用于提交更新的代码(即个人使用的版本库)。

[root@localhost strong]# git init strong.work
Initialized empty Git repository in /opt/git/strong/strong.work/.git/
[root@localhost strong]# ls
strong.work
[root@localhost strong]# ls -a strong.work/
.  ..  .git
[root@localhost strong]#

2、git init –bare 初始化一个空的版本库,以后用于向各个线上、测试、开发等提供pull、push 服务的固定版本库(即共用的库、远程库)。

[root@localhost strong]# git init --bare strong.server
Initialized empty Git repository in /opt/git/strong/strong.server/
[root@localhost strong]# ls
strong.server  strong.work
[root@localhost strong]# ls strong.server/
branches  config  description  HEAD  hooks  info  objects  refs
[root@localhost strong]#

3、安装git-Daemon服务,通过网络向各个客户端提供pull、push等服务。

yum install git-daemon
[root@SH-BA-01-MAN strong]# nohup git daemon --base-path=/opt/git --export-all --port=9400 --listen=你的服务器地址 --verbose --reuseaddr --user=www &
[1] 26947
[root@localhost strong]#
[root@localhost strong]# netstat -tpln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 你的服务器地址:9400             0.0.0.0:*                   LISTEN      26948/git-daemon

服务已经成功在后台运行,可以看到已经在监听指定的端口了。此时防火墙要开放9400端口(端口号没有特别的需求,只要与git pull时一致即可)。

4、客服端(线上正式或测试环境的代码目录)也要按照第一步的操作git init初始化一个版本库,用于git pull接收代码(即个人使用的版本库,后面有示例)。

2)、演示一个文件从git server服务器的stong.work目录添加提交然后push到stong.server目录,最后客户端将文件pull到本地目录的过程。
向strong.work目录添加一个文件test

[root@localhost strong.work]# echo " this is test" > test

添加新增文件的索引

[root@localhost strong.work]# git add .

显示工作状态

[root@localhost strong.work]# git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
# new file:   test
#

向仓库记录文件的改变(提示没有设置使用者的用户名及邮箱,可以按提示命令设置。)

[root@localhost strong.work]# git commit -a -m 'test'
[master (root-commit) fef0816] test
 Committer: root <root@SH-BA-01-MAN.(none)>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:

    git config --global user.name "Your Name"
    git config --global user.email you@example.com

If the identity used for this commit is wrong, you can fix it with:

    git commit --amend --author='Your Name <you@example.com>'

 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 test

将改变提交到远程库strong.server(strong.work和strong.server可以在同一台主机,你懂的)

[root@localhost strong.work]# git push /opt/git/strong/strong.server/ master
Counting objects: 3, done.
Writing objects: 100% (3/3), 213 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
To /opt/git/strong/strong.server/
 * [new branch]      master -> master

登录客户端(线上正式或测试环境的代码目录)主机第一次pull时需要初始化一个git库(个人使用的那种)

[root@otherhost home]# git init strong.git
Initialized empty Git repository in /home/strong.git/.git/
[root@otherhost home]# cd strong.git/
[root@otherhost strong.git]# ls
[root@otherhost strong.git]# git pull git://你的server服务器地址:9400/strong/strong.server master
[27027] Connection from 10.0.0.252:47433
[27027] Extended attributes (22 bytes) exist <host=你的server服务器地址:9400>
[27027] Request upload-pack for '/strong/strong.server'
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
[26948] [27027] Disconnected
Unpacking objects: 100% (3/3), done.
From git://10.0.0.252:9400/strong/strong.server
 * branch            master     -> FETCH_HEAD
[root@otherhost strong.git]# ls
test
[root@otherhost strong.git]# cat test
this is test

转载请注明出处:http://www.xiaomastack.com/2014/10/13/release-1/ 谢谢!

2 Comments

 Add your comment
  1. 你好 我的qq是710797147 能不能可以沟通下呢

  2. 已加

发表评论:

你的电子邮件地址将不会被公开.

4 × 8 =