#Gitee 的 WebHooks 实现代码自动化部署#

news2024/11/17 11:00:34

1:安装git
2:php同步脚本
3:配置webhook

一:安装git服务

// 查看是否安装了git
git --version

// 如果未安装,执行安装命令
yum install git

2:编写同步PHP脚本

<?php
//理发店钩子
error_reporting(1);
set_time_limit(0);
// 部署目录
$target = '/www/wwwroot/haircutapp';
// 部署密钥
$password = '123456';
// 部署分支
$branch = 'master';

// git 地址
$giturl = "https://gitee.com/xxx/xxss.git";

if(!file_exists($target)){
  // 如果目录不存在 就clone 一个
    $basedir = dirname($target) ;
    $cmd = "(cd $basedir && git clone   $giturl ) 2>&1 ";
    shell_exec($cmd);
    chmod($target,0777) ;
}
// token判断




// 分支判断
$arr = file_get_contents('php://input', 'r');
$arr = json_decode($arr, true);
if (JSON_ERROR_NONE !== json_last_error()) {
    die("解析json失败");
}

// 验证提交密码是否正确
if (!isset($arr['password']) || $arr['password'] !== $password) {
    echo '密码错误';
    exit(0);
}

$ref = isset($arr['ref']) ? $arr['ref'] : die("没有分支信息");
$ref = explode('/', $ref);
$ref = array_pop($ref);
if ($branch != $ref) {
    die("同步失败:不是分支" . $branch);
}

$cmd = "(cd $target && git pull ) 2>&1 ";
echo shell_exec($cmd);
$res_log = "---------------------------------------------------------------" . PHP_EOL;
$res_log .= PHP_EOL . "pull start ---------------------------------------------" . PHP_EOL;
$res_log .= '------------------------------------------------------------' . PHP_EOL;
$res_log .= '-----------当前时区:' . date_default_timezone_get();
$res_log .= $arr['user_name'] . ' 在' . date('Y-m-d H:i:s') . '向' . $arr['repository']['name'] . '项目的' . $arr['ref'] . '分支push了' . $arr['total_commits_count'] . '个commit:';
$res_log .= '------------------------------------------------------------' . PHP_EOL;
$res_log .= "pull end -----------------------------------------------------" . PHP_EOL;
file_put_contents("/www/wwwroot/webhook.yanghaifeng.top/logs/" . date('Y-m-d', time()) . ".txt", $res_log, FILE_APPEND);//写入日志到log文件中

echo '很棒:'.date('y-m-d H:i:s');

?>
    

3:如果使用公钥方式,需要配置一下公钥

  • 配置公钥
  • 首先查看服务器上是否已经存在公钥 id_rsa.pub 文件
  • 如果存在,直接复制里面的内容,如果不存在,先生成
// 查看是否由公钥文件
ll ~/.ssh/

// 如果存在公钥,则执行
cat ~/.ssh/id_rsa.pub

// 如果不存在,则重新生成
ssh-keygen -t rsa

4:如果使用密码的方式,需要再码云后端设置一下密码就可以了

 

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

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

相关文章

AI 视频清晰化CodeFormer-Deepfacelab

CodeFormer 概述 (a) 我们首先学习一个离散码本和一个解码器&#xff0c;通过自重建学习来存储人脸图像的高质量视觉部分。(b) 使用固定的码本和解码器&#xff0c;我们引入了一个用于代码序列预测的 Transformer 模块&#xff0c;对低质量输入的全局人脸组成进行建模。此外&a…

经营简报echarts图

文章目录 效果图代码 效果图 代码 <template><div class"mainFirst"><div id"main" style"width: 100%; height: 500px"></div></div> </template><script> import * as echarts from "echarts…

对象转JSON字符串和JSON字符串拼接格式化后顺序问题

使用的是fastJson 实体类 转JSON字符串 格式化输出 转JSON字符串或者格式化输出后的顺序调整 注意这个和toString方法没有关系,完全按照 JSONType注解里的排序 上面是实体对象JSON格式化的排序问题 下面是JSON字符串拼接后的排序问题 拼接JSON字符串 恢复排序

优思学院|PPAP(生产零件批准过程)是什么?

生产零件批准过程&#xff08;PPAP&#xff09;是一种非常有效的工具&#xff0c;用于优化制造业供应链。PPAP是一个标准化的过程&#xff0c;它确保制造商可以提供高质量的零件和产品&#xff0c;并符合客户的要求和期望。在本文中&#xff0c;我们将深入探讨PPAP的重要性&…

数据库性能分析工具的使用

数据库性能分析工具的使用 在数据库调优中&#xff0c;我们的目标就是相应时间更快&#xff0c;吞吐量更大。利用宏观监控工具和微观日志分析可以帮我们快速找到调优的思路和方式。 1. 数据库服务器优化步骤 2. 查看系统性能参数 在MySQL种&#xff0c;可以使用show status …

卤味行业数据分析报告

在一个炎热的夏日午后&#xff0c;热气蒸腾的城市街头弥漫着一股令人垂涎欲滴的香气。这股香气源自一家招牌醒目的卤味小吃摊位&#xff0c;摊主技巧娴熟地将各式美味的食材浸泡在独特的卤汁中。这里没有花哨的招牌&#xff0c;却吸引了无数食客的目光和嘴巴。 卤制食品在中国烹…

vue新 学习 01

01.vue的安装于配置 首先这次从尚硅谷中学习的vue&#xff0c;要安装的ida是vscode&#xff0c;这里需要注意的是安装的版本是system版本的&#xff0c;否则有些功能就不能够实现。 安装vue的官方插件vue.devtools&#xff0c;这个会让vue的在浏览器上的测试变得很流畅很方便&a…

Linux CentOS快速安装VNC并开启服务

以下是在 CentOS 上安装并开启 VNC 服务的步骤&#xff1a; 安装 VNC 服务器软件包。运行以下命令&#xff1a; sudo yum install tigervnc-server 输出 $ sudo yum install tigervnc-server Loaded plugins: fastestmirror, langpacks Repository epel is missing name i…

UE4 Cesium for unreal 零碎学习笔记

1、要让对应目标移动到对应经纬度海拔上的前提是&#xff0c;先添加一个UCesiumGlobeAnchorComponent组件&#xff0c;组件内封装的有MoveToLongitudeLatitudeHeight函数&#xff0c;用于将组件的owner&#xff08;拥有者&#xff09;设置到对应经纬度高上去 2、Problem&#…

MySQL数据库关于表的一系列操作

MySQL中的数据类型 varchar 动态字符串类型&#xff08;最长255位&#xff09;&#xff0c;可以根据实际长度来动态分配空间&#xff0c;例如&#xff1a;varchar(100) char 定长字符串&#xff08;最长255位&#xff09;&#xff0c;存储空间是固定的&#xff0c;例如&#…

mysql用户添加

一、连接mysql服务 mysql -u root -p 二、查询用户表 use mysql &#xff1b; SELECT User, Host FROM mysql.user; 三、新增用户并授权 Create USER dev4rw% IDENTIFIED WITH mysql_native_password BY 新密码; GRANT ALL PRIVILEGES ON *.* TO dev4rw% WITH GRANT OP…

MySQL-Explain简版

文章目录 前言1.什么是explain2.explain有什么用3.explain怎么用理解explain的列代表的意思id列select_type列table列partitions列type列possible_keys列key列key_len列ref列rows列Extra列 前言 没必要记吧&#xff0c;忘了直接查 1.什么是explain 在select语句之前增加explai…

2023-7-26-第二十三式解释器模式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

Apache Dubbo CVE-2021-36162 挖掘过程

01 漏洞背景 发现该漏洞的起因是在分析 CVE-2021-30181 的脚本注入补丁的时候&#xff0c;意外发现了几个已被修复的 yaml 反序列化漏洞&#xff0c;还以为是未公开的Nday&#xff0c;查询后发现其实对应的是 CVE-2021-30180 漏洞的修复代码。通过查看补丁可以知道&#xff0c…

uniapp使用echarts

uniapp使用echarts 1.下载资源包2.引入资源包3.代码示例注意事项 1.下载资源包 https://echarts.apache.org/zh/download.html 2.引入资源包 将资源包放入项目内 3.代码示例 <template><div style"width:100%;height:500rpx" id"line" ref&…

Docker--harbor Docker--registry 私有仓库部署与管理

官方组件registry搭建私有仓库 registry服务器设置 拉取 registry 镜像 docker pull registry 开启registries容器 docker run -d -v /data/registry:/var/lib/registry -p 5000:5000 --restartalways --name registry registry:latest 客户机设置 添加私有仓库地址 使用配置文…

【笔试强训选择题】Day30.习题(错题)解析

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;笔试强训选择题 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&#xff…

前端学习——Vue (Day3)

生命周期 生命周期 & 生命周期四个阶段 Vue 生命周期函数 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"…

hdvp.

hdvp:外部函数文件&#xff0c;函数定义在hdvp中可以传输给任何hdev使用&#xff0c;即可以发给别人使用。同时允许对hdvp进行加密

力扣热门100题之轮转数组【中等】

题目描述 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6…