Git 自动化部署
分两个部分:
搭建自己的git服务器
自动化部署
搭建自己的git服务器
一般的开源项目,我们都会把项目托管在第三方平台如github。 这样就省去了搭建git服务器的麻烦。
但如果你希望项目保密,或者很geek想自己搭建自己的git服务器那么就看下面的教程吧。
本人的服务器是 Ubuntu 12.04
1 首先在我们的服务器上面
sudo apt-get install git
sudo apt-get install openssh-server openssh-client
sudo /etc/init.d/ssh start
安装openssh-server和openssh-client是由于git需要通过ssh协议来在服务器与客户端之间传输文件。
用户信息
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
配置个人用户名和邮件地址。每次git提交都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录
创建一个git仓库的存储点:
sudo mkdir /var/deploy
sudo chown git:git /var/deploy
sudo chmod 755 /var/deploy
网上一堆教程让你groupadd user
useradd git ,其实只要安装了git,就会自动有git这个用户以及用户组生成。
2 客户端
大多数Git服务器都会选择SSH公钥来进行授权。系统中每个用户都必须提供一个公钥用于授权,没有的话就要生成一个。生成公钥的过程在所有OS上都类似:
ssh-keygen
然后查看~./ssh目录,是否有id_rsa.pub文件,然后拷贝到 服务器的 /home/git文件夹中。
或者拷贝到 服务器的 ~/.ssh 目录下。
然后执行以下的命令把公钥追加到authorized_keys文件尾部
服务端
$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.jessica.pub >> ~/.ssh/authorized_keys
接着在我们的/home/git/repositories 目录下可以新建 一个裸仓库
cd /home/git/repositories
mkdir spw.git
cd spw.git
git init
回到客户端
我们此时就可以把它加为远程仓库,推送一个分支,从而把第一个版本的项目文件上传到仓库里。每次添加一个新项目都需要通过shell登入主机并创建一个裸仓库目录。
假设服务器ip为 192.168.1.196
在我们客户端,新建一个文件夹spw,作为要上传的文件夹
git init
git add .
git commit -m "No.1"
git remote add origin git@192.168.1.196:/home/git/repositories/spw.git
git push origin master
对于其他客户端来说,克隆和推送也非常简单:
git clone git@192.168.1.196:spw
3 安装配置gitosis
把所有用户的公钥都保存在authorized_keys文件的做法只能是暂时的,当用户数量达到几百人的规模,管理就会很痛苦。这种做法还缺少必要的权限管理-每个人都对所有项目拥有完整的读写权限。
Gitosis就是一套用来管理authorized_keys文件和实现简单连接限制的脚本。添加用户和设定权限只是管理一个特殊的Git仓库,我们只需要在这个仓库设定好,然后push到服务器上,Gitosis就会随之改变运行策略。
首先
安装python的setup tool.
sudo apt-get install python-setuptools
安装Gitosis
$ git clone https: