在gitlab 中使用webhook 实现php 自动部署git 代码

在技术团队讨论中,我们决定从svn 迁移到 git ,于是使用了gitlab,代码自动部署使用了webhook

在服务器上

1.开启PHP需要的环境支持

服务器环境必须先安装git 环境,webhook 依赖php运行环境,同时需要使用shell_exec 和 exec 等函数。使用前先开启php部分可执行函数。

$ which php
/usr/local/php/bin/php$ sudo vi /usr/local/php/etc/php.ini;disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,popen

2.查看nginx 运行用户

因为gitlab 的 webhooks 的使用者都是web 服务器在用,我使用的是nginx ,所以必须的知道nginx和php-fpm的所有者是谁

$ ps aux | grep php$ ps aux | grep php-fpm

我的环境下是nginx

3.生成部署公钥

 sudo -Hu nginx ssh-keygen -t ras #一路回车下去就可以了

然后把公钥添加到gitlab 上去,不要问我怎么添加的,如果使用过github,就应该知道这个是怎么回事

4.首次从gitlab clone,指定目录需要为空

git clone git@git.xxxx.com:test/test.git  /data/www/git_test/

在网站根目录下放置webhook 自动部署文件webhook.php,然后gitlab 对应项目的webhook 配置使用该文件的网址

<?php
//git webhook 自动部署脚本
//项目存放物理路径
$path = "/data/www/git_test/test/";$requestBody = file_get_contents("php://input");if (empty($requestBody)) {die('send fail');
}
$content = json_decode($requestBody, true);//若是主分支且提交数大于0
if ($content['ref']=='refs/heads/master' && $content['total_commits_count']>0) {$res = shell_exec("cd {$path} && git pull 2>&1");//以nginx用户运行$res_log = '-------------------------'.PHP_EOL;$res_log .= $content['user_name'] . ' 在' . date('Y-m-d H:i:s') . '向' . $content['repository']['name'] . '项目的' . $content['ref'] . '分支push了' . $content['total_commits_count'] . '个commit:' . PHP_EOL;$res_log .= $res.PHP_EOL;file_put_contents("git-webhook.txt", $res_log, FILE_APPEND);//追加写入}

修改这个文件的所有者为 nginx

chown -R nginx:nginx webhook.php

参考文章
1.http://www.piaoyi.org/linux/G...
2.https://docs.gitlab.com/ce/us...
3.https://m.aoh.cc/149.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spi收发时的寄存器sr不变_「正点原子Linux连载」第二十七章SPI实验(二)

1)实验平台&#xff1a;正点原子Linux开发板2)摘自《正点原子I.MX6U嵌入式Linux驱动开发指南》关注官方微信号公众号&#xff0c;获取更多资料&#xff1a;正点原子文件bsp_spi.c中有两个函数&#xff1a;spi_init和spich0_readwrite_byte&#xff0c;函数spi_init是SPI初始化函…

vue脚手架vue数据交互_学习Vue:3分钟的交互式Vue JS教程

vue脚手架vue数据交互Vue.js is a JavaScript library for building user interfaces. Last year, it started to become quite popular among web developers. It’s lightweight, relatively easy to learn, and powerful.Vue.js是用于构建用户界面JavaScript库。 去年&#…

[JSOI2018]潜入行动

题解 一道思路不难但是写起来很麻烦的树形背包 我们发现每个节点有很多信息需要保留 所以就暴力的设\(f[u][j][0/1][0/1]\)表示点u的子树分配了j个监察器,点u有没有被控制,点u放没放监察器 然后就分四种情况暴力讨论就好了 注意背包的时候要卡常数 代码 #include<cstdio>…

css。元素样式、边框样式

1.外边距  margin 缩写形式&#xff1a; margin&#xff1a;上边距  右边距  下边距  左边距 margin&#xff1a;上下边距  左右边距 margin&#xff1a;上边距  左右边距  下边距 2.内边距  padding 缩写形式&#xff1a; padding&#xff1a;上边距  右边距…

html文本对齐6,HTML对齐文本

我要像以下列方式显示页面上的文本&#xff1a;HTML对齐文本My Text: Text HereMy Text: More Text Here.........................................................Text from line above continued here.我有以下的标记只是为了测试&#xff1a;body {font-family: arial;}fo…

vue底部跳转_详解Vue底部导航栏组件

不多说直接上代码 BottomNav.vue&#xff1a;{{item.name}}export default{props:[idx],data(){return {items:[{cls:"home",name:"首页",push:"/home",icon:"../static/home.png",iconSelect:"../static/home_select.png"}…

Android Studio环境搭建

Android Studio环境搭建 个人博客 欢迎大家多多关注该独立博客。 ###[csdn博客]&#xff08;http://blog.csdn.net/peace1213&#xff09; 一直想把自己的经验分享出来&#xff0c;记得上次写博客还是ok6410的笔记。感觉时代久远啊。记得那个时候我还一心想搞硬件了。如今又一次…

hacktoberfest_Hacktoberfest和其他有趣的事情将在本周末在freeCodeCamp

hacktoberfestby Quincy Larson昆西拉尔森(Quincy Larson) Hacktoberfest和其他有趣的事情将在本周末在freeCodeCamp (Hacktoberfest and other fun things going on this weekend at freeCodeCamp) Earlier this month, the freeCodeCamp community turned 3 years old. And …

C# 动态创建数据库三(MySQL)

前面有说明使用EF动态新建数据库与表&#xff0c;数据库使用的是SQL SERVER2008的&#xff0c;在使用MYSQL的时候还是有所不同 一、添加 EntityFramework.dll &#xff0c;System.Data.Entity.dll &#xff0c;MySql.Data, MySql.Data.Entity.EF6 注意&#xff1a;Entity Frame…

iOS开发Swift篇—(七)函数(1)

一、函数的定义 &#xff08;1&#xff09;函数的定义格式 1 func 函数名(形参列表) -> 返回值类型 { 2 // 函数体... 3 4 } &#xff08;2&#xff09;形参列表的格式 形参名1: 形参类型1, 形参名2: 形参类型2, … &#xff08;3&#xff09;举例&#xff1a;计算2个…

如何用计算机管理员权限,教你电脑使用代码添加管理员权限的详细教程

我们在使用电脑运行某些软件的时候&#xff0c;可能需要用到管理员权限才能运行&#xff0c;通常来说直接点击右键就会有管理员权限&#xff0c;但最近有用户向小编反馈&#xff0c;在需要管理员权限的软件上点击右键没有看到管理员取得所有权&#xff0c;那么究竟该如何才能获…

activiti 5.22的demo运行

activiti 5.22的demo运行 从github上clon下来的activiti项目,运行demo项目activiti-webapp-explorer2时&#xff0c;在使用到流程设计工作区&#xff0c;选取activiti modeler作为设计器的时候报错。 从下面的报错信息中发现&#xff0c;请求路径http://localhost:8080/activit…

宣布JavaScript 2017状况调查

by Sacha Greif由Sacha Greif 宣布JavaScript 2017状况调查 (Announcing the State of JavaScript 2017 Survey) 让我们找出去年以来发生的变化&#xff01; (Let’s find out what’s changed since last year!) In a hurry? You can take the survey here.匆忙&#xff1f;…

内是不是半包围结构_轻钢别墅的体系结构

一、轻钢别墅介绍1、轻钢别墅的屋面系统轻钢别墅屋面系统是由屋架、结构OSB面板、防水层、轻型屋面瓦&#xff08;金属或沥青瓦&#xff09;组成的。轻钢结构的屋面&#xff0c;外观可以有多种组合。材料也有多种。在保障了防水这一技术的前提下&#xff0c;外观有了许多的选择…

JavaScript call()函数的应用

call([thisObj[,arg1[, arg2[, [,.argN]]]]]) call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 thisObj 可选项。将被用作当前对象的对象。 arg1, arg2, , argN 可选项。将被传递方法参数序…

hive 去重 字符串_hive函数

Hive是建立在 Hadoop 上的数据仓库基础架构,定义了简单的类 SQL 查询语言(HQL)函数分类&#xff1a;简单内置函数&#xff1a;数学函数&#xff0c;字符函数&#xff0c;日期函数&#xff0c;条件函数&#xff0c;聚合函数。高级内置函数&#xff1a;行列转换函数&#xff0c;分…

python word

代码&#xff1a; 1 #codingutf-82 __author__ zhm3 from win32com import client as wc4 import os5 import time6 import random7 import MySQLdb8 import re9 def wordsToHtml(dir):10 #批量把文件夹的word文档转换成html文件11 #金山WPS调用&#xff0c;抢先版的用KWPS&a…

aws lambda_如何为AWS Lambda实施日志聚合

aws lambdaby Yan Cui崔燕 如何为AWS Lambda实施日志聚合 (How to implement log aggregation for AWS Lambda) During the execution of a Lambda function, whatever you write to stdout (for example, using console.log in Node.js) will be captured by Lambda and sent…

【Python3爬虫】为什么你的博客没人看呢?

我相信对于很多爱好和习惯写博客的人来说&#xff0c;如果自己的博客有很多人阅读和评论的话&#xff0c;自己会非常开心&#xff0c;但是你发现自己用心写的博客却没什么人看&#xff0c;多多少少会觉得有些伤心吧&#xff1f;我们今天就来看一下为什么你的博客没人看呢&#…

泰安高考2021成绩查询,泰安高考成绩查询入口2021

高考结束之后&#xff0c;为了方便大家进行高考成绩的查询&#xff0c;下面跟着出国留学网小编来一起看看“泰安高考成绩查询入口2021”&#xff0c;仅供参考&#xff0c;希望对大家有帮助。2021山东高考成绩查询时间及志愿填报时间根据山东2021年夏季高考须知&#xff0c;2021…