码云webhook自动部署

2024-06-14 18:18
文章标签 部署 自动 码云 webhook

本文主要是介绍码云webhook自动部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  1. 配置php的www可执行Linux shell 脚本;
    参考:php执行Linux shell 脚本
  2. 配置码云的webhook
    码云以post方式,通知web服务器
    码云webhook设置

  3. 代码参考:

<?php//file_put_contents("git-webhook_log.txt", 'test-webhooks', FILE_APPEND);//写入日志到log文件中
//exit('webhook');//git webhook 自动部署脚本
//项目存放物理路径,第一次clone时,必须保证该目录为空
$savePath = "xxx";
$gitPath  = "xxx";//代码仓库$email = "xxx";//用户仓库邮箱
//$name  = "admin";//仓库用户名,一般和邮箱一致即可
$name  = "xxx";//仓库用户名,一般和邮箱一致即可$isClone = false;//设置是否已经Clone到本地,true:已经clone,直接pull,false:先clone.//如果已经clone过,则直接拉去代码
if ($isClone) {$requestBody = file_get_contents("php://input"); //handle post dataif (empty($requestBody)) {die('send fail');}//解析Git服务器通知过来的JSON信息$content = json_decode($requestBody, true);//若是主分支且提交数大于0if ($content['ref']=='refs/heads/master' && $content['total_commits_count']>0) {$res = PHP_EOL."pull start --------".PHP_EOL;$res .= shell_exec("cd {$savePath} && git pull {$gitPath}");//拉去代码$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:';$res_log .= $res.PHP_EOL;$res_log .= "pull end --------".PHP_EOL;$res .= shell_exec("chown -R www.www {$savePath}").PHP_EOL; //修改web路径的权限file_put_contents("git-webhook_log.txt", $res_log, FILE_APPEND);//写入日志到log文件中}
}
else {$res = "clone start --------".PHP_EOL;//注:在这里需要设置用户邮箱和用户名,不然后面无法拉去代码//shell_exec 需要root的权限$res .= shell_exec("git config --global user.email {$email}}").PHP_EOL;$res .= shell_exec("git config --global user.name {$name}}").PHP_EOL;$res .= shell_exec("git clone {$gitPath} {$savePath}").PHP_EOL;$res .= "clone end --------".PHP_EOL;$res .= shell_exec("chown -R www.www {$savePath}").PHP_EOL; //修改web路径的权限file_put_contents("git-webhook_log.txt", $res, FILE_APPEND);//写入日志到log文件中
}?>

由转载参考ref:

这篇关于码云webhook自动部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1061159

相关文章

基于Python编写一个git自动上传的脚本(打包成exe)

《基于Python编写一个git自动上传的脚本(打包成exe)》这篇文章主要为大家详细介绍了如何基于Python编写一个git自动上传的脚本并打包成exe,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录前言效果如下源码实现利用pyinstaller打包成exe利用ResourceHacker修改e

mysql_mcp_server部署及应用实践案例

《mysql_mcp_server部署及应用实践案例》文章介绍了在CentOS7.5环境下部署MySQL_mcp_server的步骤,包括服务安装、配置和启动,还提供了一个基于Dify工作流的应用案例... 目录mysql_mcp_server部署及应用案例1. 服务安装1.1. 下载源码1.2. 创建独立

Nginx服务器部署详细代码实例

《Nginx服务器部署详细代码实例》Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,:本文主要介绍Nginx服务器部署的相关资料,文中通过代码... 目录Nginx 服务器SSL/TLS 配置动态脚本反向代理总结Nginx 服务器Nginx是一个‌高性

使用Python将PDF表格自动提取并写入Word文档表格

《使用Python将PDF表格自动提取并写入Word文档表格》在实际办公与数据处理场景中,PDF文件里的表格往往无法直接复制到Word中,本文将介绍如何使用Python从PDF文件中提取表格数据,并将... 目录引言1. 加载 PDF 文件并准备 Word 文档2. 提取 PDF 表格并创建 Word 表格

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

Python + Streamlit项目部署方案超详细教程(非Docker版)

《Python+Streamlit项目部署方案超详细教程(非Docker版)》Streamlit是一款强大的Python框架,专为机器学习及数据可视化打造,:本文主要介绍Python+St... 目录一、针对 Alibaba Cloud linux/Centos 系统的完整部署方案1. 服务器基础配置(阿里

Apache服务器IP自动跳转域名的问题及解决方案

《Apache服务器IP自动跳转域名的问题及解决方案》本教程将详细介绍如何通过Apache虚拟主机配置实现这一功能,并解决常见问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录​​问题背景​​解决方案​​方法 1:修改 httpd-vhosts.conf(推荐)​​步骤

idea-java序列化serialversionUID自动生成方式

《idea-java序列化serialversionUID自动生成方式》Java的Serializable接口用于实现对象的序列化和反序列化,通过将对象转换为字节流来存储或传输,实现Serializa... 目录简介实现序列化serialVersionUID配置使用总结简介Java.io.Seripyth

MongoDB搭建过程及单机版部署方法

《MongoDB搭建过程及单机版部署方法》MongoDB是一个灵活、高性能的NoSQL数据库,特别适合快速开发和大规模分布式系统,本文给大家介绍MongoDB搭建过程及单机版部署方法,感兴趣的朋友跟随... 目录前言1️⃣ 核心特点1、文档存储2、无模式(Schema-less)3、高性能4、水平扩展(Sh

Docker + Redis 部署集群的实现步骤

《Docker+Redis部署集群的实现步骤》本文详细介绍了在三台服务器上部署高可用Redis集群的完整流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、环境准备1. 服务器规划(3 台服务器)2. 防火墙配置(三台服务器均执行)3. 安装 docke