Git自动化部署

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:
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值