设为首页 收藏本站
查看: 681|回复: 0

[经验分享] 小铁匠、修炼之路

[复制链接]

尚未签到

发表于 2018-1-11 11:23:15 | 显示全部楼层 |阅读模式
  钩子(hooks)
  hooks是在特定事件发生之前或之后执行特定脚本代码功能(从概念上类比,就与监听事件、触发器之类的东西类似)。
  Git hooks就是那些在Git执行特定事件(如commit、push、receive等)后触发运行的脚本。
  gitlab的web hooks跟git hook类型。也是当项目发生提交代码、提交tag等动作会自动去调用url,这个url可以是更新代码,或者其他操作。
  配置目的
  由于系统属于后台接口系统,开发提交完git仓库后要实时的部署到测试环境,这时候就需要用到gitlab的web hooks自动更新部署了。


  • 客户端:要自动更新的测试服务器IP:192.168.1.2
  • 服务端:gitlab服务器IP:192.168.1.1
  • Gitlab Version 7.13.0.pre
  • Gitlab-Shell Version:2.6.3
  步骤如下:


  • 在客户端上配置Apache配置文件,为web hooks添加一个访问接口
  

#vim /usr/local/apache/conf/httpd.conf  

  
listen
81  
<VirtualHost *:81>
  ServerAdmin localhost
  DocumentRoot "/www/gitlab_web"
  <Directory "/www/gitlab_web">
  Options -Indexes +FollowSymLinks
  AllowOverride None
  Order allow,deny
  Allow from all
  </Directory>
  RewriteEngine on
  
</VirtualHost>
  

  2.在服务端gitlab上面为客户端添加gitlab新账号,然后将生产的公钥添加到gitl的账号里面
  

(profile setting→SSH  Keys →add ssh key)  
#
su - webuser  
#
ssh-keygen -t rsa  
进入项目目录
  
#cd
/path/project  
初始化git仓库
  
#git clone git@
192.168.1.1:test/test_api.git  

  3.在客户端上面添加接口文件
  

#vim /www/gitlab_web/index.php  

  
<?php
  
//作为接口传输的时候认证的密钥
  
$valid_token = 'd49dfa762268687eb2ca59498ce852';
  
//调用接口被允许的ip地址
  
$valid_ip = array('192.168.1.1','10.17.10.175','112.112.112.112');
  
$client_token = $_GET['token'];
  
$client_ip = $_SERVER['REMOTE_ADDR'];
  
$fs = ('./auto_hook.log', 'a');
  
($fs, 'Request on ['.("Y-m-d H:i:s").'] from ['.$client_ip.']'.PHP_EOL);
  
if ($client_token !== $valid_token)
  
{
  echo "error 10001";
  ($fs, "Invalid token [{$client_token}]".PHP_EOL);
  exit(0);
  
}
  
if ( ! ($client_ip, $valid_ip))
  
{
  echo "error 10002";
  ($fs, "Invalid ip [{$client_ip}]".PHP_EOL);
  exit(0);
  
}
  
$json = ('php://input');
  
$data = json_decode($json, true);
  
($fs, 'Data: '.($data, true).PHP_EOL);
  
($fs, '======================================================================='.PHP_EOL);
  
$fs and ($fs);
  
//这里也可以执行自定义的脚本文件update.sh,脚本内容可以自己定义。
  
//exec("/bin/sh /root/updategit.sh");
  
("cd  /path/project;/usr/bin/git pull");
  

  4.访问接口,测试接口是否成功。
  

http://192.168.1.2:81/?token=d49dfa7622681425fbcbdd687eb2ca59498ce852  

  5.查看客户端日志
  

#cat /www/gitlab_web/auto_hook.log  

=======================================================================  
Request on [
2015-07-03 14:05:02] from [112.122.112.112]  
Data:
  

=======================================================================  

  6.在服务端gitlab服务器上面添加web hooks
  

admin area->projects->test/edit->WEB Hooks->add WEB Hooks  


  7.提交修改代码到gitlab仓库,然后查看日志、查看测试环境是否更新
  

#cat /www/gitlab_web/auto_hook.log  
Request on [
2015-07-03 14:13:37] from [12.123.12.3]  
Data: Array
  
(
[object_kind]

=> push
[before]

=> e5988b5dce7a038
[after]

=> d8ce92ac4ab4ba046dd
[ref]

=> refs/heads/master
[checkout_sha]

=> d8ceefd5c4ab4ba046dd
[message]

=>
[user_id]

=> 7
[user_name]

=> test
[user_email]

=> test@qq.com
[project_id]

=> 3
[repository]

=> Array  (
[name]

=> test_api
[url]

=> git@192.168.1.1:test/test.api
[description]

=> test.com product code
[homepage]

=> http://xx./test_api
[git_http_url] => http://xx./test_api

[git_ssh_url] => git@112.23.23.1:test.git

[visibility_level] => 10

  )
  

[commits] => Array

  (
[0] => Array

  (
[id] => d8cec4ab4ba046dd

[message] => 测试gitlab的web hook接口。

  

[timestamp] => 2015-07-03T14:13:51+08:00

[url] => http://xxxx/test_api/commit/d8ce95c4ab4ba046dd

[author] => Array

  (
[name] => test

[email] => test@qq.com

  )
  

  )
  

  )
  

[total_commits_count] => 1

  
)
  

  PS:注意事项:
  1:配置完成后。调用接口的时候没有自动更新到测试环境。可以使用apache的运行用户测试命令是否可以执行成功
  

#su - webuser  
#cd
/path/project  
#git pull
  

  2:如果Apache的用户无法执行命令或者更新git代码,请检查一下Apache的用户的shell以及PHP是否支持exec调用shell命令。
  原文地址:https://mp.weixin.qq.com/s?__biz=MzIxNDE4NDg0Ng==&mid=405872601&idx=2&sn=1b7392ef541e044e8e60bd0695cf430a&scene=24&srcid=0407Gq48cxRCWvJmt1qV5Klb#rd

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-433876-1-1.html 上篇帖子: gitlab升级方法 下篇帖子: docker实践安装gitlab
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表