博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】搭建git服务器及利用git hook自动布署代码
阅读量:7040 次
发布时间:2019-06-28

本文共 1821 字,大约阅读时间需要 6 分钟。

转自

我喜欢 github,我现在的个人代码全部是托管在上面了,但是一些公司或者某些项目不适合放入github中,你希望能有一个完全私有的仓库,如果你有一台服务器,这显然是很容易办到的事。

下面简单的描述我在某个项目中布署的一个git服务,并且本地提交更新后,服务器将自动更新代码到在线代码的仓库。

创建用户并使客户机可通过密钥登录服务器

服务器中操作

root 用户ssh登录服务器,创建一个新用户用来给git登录及其操作,比如这里我创建一个名为“git”的用户:

$ sudo add user git

进入到 /home/git 文件夹中,查看是否有 .ssh/ 目录, 如没有:

$ mkdir .ssh

进入 /home/git/.ssh 文件夹中,创建文件 authorized_keys

等待

客户机中操作

进入 ~/.ssh/ 目录,查看是否有 id_rsa.pub 文件,如没有:

$ ssh-keygen

一路回车,完成后,便可发现 ~/.ssh/ 目录中有 id_rsa.pub, 复制其内容,粘贴到上面操作服务器的 authorized_keys 文件中

测试是否密钥登录成功

$ ssh git@yourserverip

创建git服务器远程仓库

进入 /opt/git 目录, 如没有,创建之

建立仓库文件夹,比如:

path:/opt/git $ mkdir gitdemo

将gitdemo用户组设置为当前用户git

初始化为远程仓库

$ git init --bare

上面的步骤已经完成了git远程仓库的创建,此时你只要将你本地的git代码仓库 git remote add git@yourserverip:/opt/git/gitdemo,便可提交与更新代码了。

比如我机器上的开发目录为:~/www/gitdemodev, 进行下面操作:

$ cd ~/www/gitdemodev $ git init  #建一个文件,写点东西进去 $ touch README | echo 'hello git' > READEME$ git add README $ git remote add origin git@yourserverip:/opt/git/gitdemo $ git commit -m 'first commit' $ git push origin master

现在你已经本地的代码成功的提交到了远程仓库中,只需在你团队成员电脑上作相同操作,便可利用git协同开发了,注意把各自电脑的 id_rsa.pub 内容复制进服务器的 authorized_keys 文件中。

git hook 自动布署代码

假设你的项目也是跑在此台服务器上,那自动布署代码就很简单了,比如你的在线服务代码在 /var/www/demo 文件夹中。

/var/www/demo也要有写权限

你先初始化代码库:

$ git clone /opt/git/gitdemo /var/www/demo

然后你可以通过 git pull 来更新代码。

当然这样是手动了,我想要的是本地提交更新后,服务器能自动的 git pull代码到最新,于是我们就要借助 git hook了。

进入到 /opt/git/gitdemo 文件夹中,会发现 .git/hook 文件夹在里面,进入到 hook 中,里面有很多的 sample 脚本,这里我们只需要用到 post-update。

$ mv post-update.sample post-update $ vim post-update

可以看到里面其实就是一些shell脚本,你要做的就是把 git pull写进去。当用户提交后,便会调用post-update脚本的。

比如我在服务器的代码库更新后,要求对应的服务代码也要更新(进行pull操作),

则在bare仓库的hooks中的post-receive添加如下内容即可

#!/bin/sh unset $(git rev-parse --local-env-vars)cd WEB_DIRgit pull

这些脚本显然是可以做很多事的,只要你想得到,要了解各脚本何时调用,google吧。

注:服务器中与git用户有关的文件夹及文件,请:

$ chown -Rh git:git /your/git/dirs

转载地址:http://szaal.baihongyu.com/

你可能感兴趣的文章
索尼富士康领投,AR显示技术厂商Digilens获得2200万美元融资
查看>>
Qt5 GUI 开发的应用易受远程代码执行漏洞的影响
查看>>
搞懂Java动态代理
查看>>
「镁客·请讲」NXROBO林天麟:我们分三步走,首先要做的就是打通机器人行业的产业链...
查看>>
Zcan无线扫描鼠标,滑哪扫哪
查看>>
寻找薛定谔的猫:量子物理的奇异世界
查看>>
mysql 获取刚插入行id汇总
查看>>
Python 数据科学入门教程:Matplotlib
查看>>
windows下codelite的使用
查看>>
VR设备前进路上,必须经历的九九八十一难
查看>>
5G汽车联盟,助力BBA角逐智能汽车市场
查看>>
安卓应用安全指南 4.5.1 使用 SQLite 示例代码
查看>>
django 1.8 官方文档翻译: 9-1-1 国际化和本地化
查看>>
OpenStack云撑起百联O2O战略布局
查看>>
Spring MVC使用@RestController生成JSON示例
查看>>
瑞士军刀包购买选择
查看>>
基于epoll封装的事件回调miniserver
查看>>
SpringBoot使用validator校验
查看>>
CSS去除免费虚拟主机的广告心得分享
查看>>
AngularJS学习总结
查看>>