git搭建流程

1、环境安装:

# useradd git
# yum -y install python-setuptools
# su - git

git$ git clone git://https://www.360docs.net/doc/3211855242.html,/res0nat0r/gitosis.git //gitosis管理机制

# exit
# cd /home/git/gitosis
# python setup.py install

# cd /scripts/
# mv id_dsa.pub qinming.pub
# chown git.git qinming.pub
# su - git
$ cd /scripts/
$ gitosis-init < qinming.pub //导入第一个管理者密钥
Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/



2、创建仓库:
git$ cd
git$ cd repositories
git$ mkdir test.git
git$ git init --bare test.git
git$ echo '/opt/bin/lpost test' > test.git/hooks/post-update
git$ chmod +x test.git/hooks/post-update

lpost脚本如下,在每次提交更新后会执行的脚本
[git@git hooks]$ cat /opt/bin/lpost
#!/bin/sh

if [ "x"$1 = "x" ];then
echo "必须输入一个项目名";
exit 1
fi

unset GIT_DIR #取消GIT_DIR变量的设置

case=$1
echo "[$(date +"%Y-%m-%d %H:%M:%S")] 提交代码 $case" >> /opt/logs/lpub.log #提交代码的日志

if [ -d "/opt/gits/$case" ]; then #如果存在这个项目目录就进入这个目录拉取并导出到日志
cd /opt/gits/$case/ && git pull >> /opt/logs/lpub.log 2>&1
else #否则就克隆一个项目并导出到日志
cd /opt/gits/ && git clone /home/git/repositories/$case.git >> /opt/logs/lpub.log 2>&1
fi

echo '1' > /tmp/$case.lpub #输出一个1给其它放在计划任务中的脚本lpub去调用查看,做异步的发布,否则每次去发调用了脚本还要等待一段时间才触发钩子

lpub脚本如下:
* * * * * /opt/bin/lpub test >> /opt/logs/lpub.log #这个是计划任务的参考

[git@git logs]$ cat /opt/bin/lpub
#!/bin/sh

if [ "x"$1 = "x" ];then
echo "必须输入一个项目名";
exit 1
fi

if [ ! -e "/opt/gits/$1/lpub.sh" ];then #如果不存在项目文件下的脚本文件则说明项目不存在然后退出
echo "项目 $1 不存在";
exit 1
fi

echo "[$(date +"%Y-%m-%d %H:%M:%S")] 开始探测 $1"
for ((i=1;i<12;i++)); do #循环12次

tag=`cat /tmp/$1.lpub 2>/dev/null` #查看lpost脚本执行后的为1的标记
if [ "x"$tag = "x1" ]; then #如果标记等于1执行下面操作

rm -f /tmp/$1.lpub
echo
echo "[$(date +"%Y-%m-%d %H:%M:%S")] 开始部署到开发服务器 $1: "

/bin/sh /opt/gits/$1/lpub.sh #执行一遍项目发布
echo

else
sleep 5 否则就休息5秒
fi

done
echo


3、git密钥的转换
(1)打开TortoiseGIT下的PuTTYGen
(2)点击Load导入你的id_dsa私钥
(3)再点击Save private Key保存为你的ppk私钥

4、添加用


(1)创建或索要用户的密钥例如:xiaowang.pub
(2)用客户端提取管理的git资源git@10.0.0.7:gitosis-admin.git。然后修改或放置里面的key并提交实际公钥放到如下目录(公钥文件要加用户名字,这样可以在提交时的信息中看到):
/home/git/repositories/gitosis-admin.git/gitosis-export/keydir
公钥文件示例如下:
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAkEPXllqhu0sCwFkNi0Y3t5zjPGekeeqUigRgdQ3EsLUVvWIi2h1UA6cPDnK8F+Pry/pLDGnJ3LFrOnyxwdStM2fROUBaOtXsCrG3P67yVU0u3TnlIcIf3vFFo4mN6VsawnRFxFt6JjWJsqYsj8vveSrDuSyJuskcLjGNMG/CzM5umT4baKiwmYPRprwh+5jBgWDjuNbfU4+5GJKJjrAVU/rCGeP92gOxtSXBnV9hFpvK2i1RnqgcNiBI0NI1ODN2CVRSCSvNmt+Pdjpsdg9dcICr2rGheJuCrila7DcFaAuQr9KNAJHqJEP9Mt3bRA/+wSgsFvNimC0mpLsdz1nMZw== 秦鸣测试

5、添加权限
(1)用客户端提取管理的git资源git@10.0.0.7:gitosis-admin.git。然后修改gitosis.conf配置文件并提交实际文件放在/home/git/repositories/gitosis-admin.git/gitosis.conf。
[gitosis]

[group gitosis-admin]
members = qinming@iZ23ytxiye4Z
writable = gitosis-admin

[group test] #组名称
writable = test # 可读写的目录
members = xiaowang qinming # 成员,和公钥.pub前段名称要对应起来

[group ServerPublish]
readonly = * #只读所有目录
members = SPub

相关主题
相关文档
最新文档