在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.pswp.cn/news/395361.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395361.shtml
英文地址,請注明出處:http://en.pswp.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…