webhook 码云git 自动_git 码云 webhook - CSDN
精华内容
参与话题
  • 宝塔webhook实现与码云代码同步

    千次阅读 2019-01-23 14:52:07
    1.给阿里云linux服务器安装git(安装宝塔面板后自带git),同时给宝塔面板安装webhook. 2.添加shell脚本,如上图,点击添加,数据名称 和 执行脚本(此处执行脚本框中 直接输入shell脚本可能会被过滤,所以可以先随便...

    1.给阿里云linux服务器安装git(安装宝塔面板后自带git),同时给宝塔面板安装webhook.

    2.添加shell脚本,如上图,点击添加,数据名称 和 执行脚本(此处执行脚本框中 直接输入shell脚本可能会被过滤,所以可以先随便添加点东西,然后再重新添加shell脚本),shell脚本如下,添加完后如上图所示:

    #!/bin/bash
    echo ""
    #输出当前时间
    date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
    echo "Start"
    #判断宝塔WebHook参数是否存在
    if [ ! -n "$1" ];
    then
              echo "param参数错误"
              echo "End"
              exit
    fi
    #git项目路径
    gitPath="/www/wwwroot/api"
    #git 网址
    gitHttp="https://gitee.com/xxx_long_group/xxx_crm.git"
    
    echo "Web站点路径:$gitPath"
    
    #判断项目路径是否存在
    if [ -d "$gitPath" ]; then
            cd $gitPath
            #判断是否存在git目录
            if [ ! -d ".git" ]; then
                    echo "在该目录下克隆 git"
                    git clone $gitHttp gittemp
                    mv gittemp/.git .
    rm -rf gittemp
            fi
            #拉取最新的项目文件
            #git reset --hard origin/master
            git pull
            #设置目录权限
            #chown -R www:www $gitPath
            echo "End"
            exit
    else
            echo "该项目路径不存在"
            echo "End"
            exit
    fi

    3.点击查看密钥,获取地址http://面板/hook?...

    4.添加公钥

    --如何生成public key
     

     cd root/.ssh
     cat id_rsa.pub
     ssh-keygen
     cat id_rsa.pub

     

    5.在码云中进行对应操作,找到对应项目,在'Webhooks设置'右侧点击添加,然后输入地址,默认选中Push,密码为空,提交。

    点击测试。

    6.用git把码云上的代码复制到服务器上,

    在wwwroot目录下,用'./api'可以直接生成 api 目录 

    git clone git@gitee.com:xxx_long_group/xxx_crm.git ./api

    7.从本地上传代码到码云,再看下服务器上的代码是否有更新验证下。

    over!

    展开全文
  • 码云webhook自动部署

    千次阅读 2018-02-28 14:28:21
    配置php的www可执行Linux shell 脚本; ...配置码云webhook 码云以post方式,通知web服务器 代码参考: &...git-webhook_log.txt", 'test-webhooks', FILE_APPEND);//写入日志到log文件中 //exit(...
    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 data
        if (empty($requestBody)) {
            die('send fail');
        }
    
        //解析Git服务器通知过来的JSON信息
        $content = json_decode($requestBody, true);
        //若是主分支且提交数大于0
        if ($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、钩子,Generric Webhook Trigger前后端分离的时候,的API接口,可能需要每次有一个接口的变动都需要重新部署到dev环境上,例如:最常见的Git工作流的方式,develop和master分开的,中提交的代码首先合并到...

    业务背景

    我们在开发的时候,特别是前后端分离的时候,前端需要我们后端提供的API接口,可能需要每次有一个接口的变动都需要重新部署到dev环境上,例如:最常见的Git工作流的方式,develop和master是分开的,在开发过程中提交的代码首先合并到develop上,如下图:

    这里写图片描述

    如果,使用Jenkins做集成工具,每次有代码合并的时候,也需要手动的去构建:

    这里写图片描述

    这是一件很繁琐的事情,如何实现当代码自动提交到develop分支的时候自动触发构建功能,目前,有效的解决方案是使用“钩子”。

    钩子功能(callback),是帮助用户push了代码后,自动回调一个您设定的http地址。 这是一个通用的解决方案,用户可以自己根据不同的需求,来编写自己的脚本程序(比如发邮件,自动部署等)。

    这里就学习一下代码托管在“码云 Git@OSC”平台上,使用通用的“Generic Webhook Trigger” 插件实现。

    关于“码云”WebHooks的介绍及使用请参考:http://git.mydoc.io/?t=154711

    准备工作

    1、这里假设你已经对Jenkins有一定的了解和使用,如果是新手的话,可以参考文章:

    使用Jenkins配置Git+Maven的自动化构建:http://blog.csdn.net/xlgen157387/article/details/50353317

    2、“码云 Git@OSC”项目托管地址,这里假设我自己的项目:https://git.oschina.net/xuliugen/dlt-server.git(私有项目)

    3、安装Generic Webhook Trigger插件

    在“系统设置–插件管理–可选插件”界面搜索:Generic Webhook Trigger,可以看到,点击安装,然后重启。

    这里写图片描述

    这里是我已经装过,所以在“已安装”界面给大家看一下!

    插件地址:https://wiki.jenkins-ci.org/display/JENKINS/Generic+Webhook+Trigger+Plugin

    搭建工作

    一、创建Job

    这里我的是Maven项目,所以直接使用下图中红色步骤1和2

    这里写图片描述

    二、配置Job

    下边依次配置是:General–>源码管理–>构建触发器–>Optional filter–>构建环境–>Pre Steps–>Build–>Post Steps–>构建设置–>构建后操作 的配置。

    (1)General

    这里写图片描述

    (2)源码管理

    这里写图片描述

    注意:这里指定 Build的分支为develop,只是为了在开发的时候部署开发的代码,如果没有直接就是master

    关于账户密码的设置,如有问题请参考:

    使用Jenkins配置Git+Maven的自动化构建:http://blog.csdn.net/xlgen157387/article/details/50353317

    (3)构建触发器

    这里写图片描述

    直接勾选使用插件即可!

    (4)Optional filter、构建环境、Pre Steps这三个部分没有进行配置,如下:

    这里写图片描述
    这里写图片描述

    (5)Build、Post Steps、E-mail Notification

    这里写图片描述

    a、指定根pom文件;
    b、这里由于我的项目是多环境的,如下:

    这里写图片描述

    我需要编译的是dev环境并且跳过测试 ,所以填入命令:

    clean install -Pdev -Dmaven.test.skip=true -e

    如果没有环境配置的话,直接忽略就可以!

    c、选中:Run only if build succeeds

    (6)构建后操作

    这里写图片描述

    我这里是部署到Tomcat容器中,关于过程不再多说,可以参考:

    使用Jenkins配置Git+Maven的自动化构建:http://blog.csdn.net/xlgen157387/article/details/50353317

    (7)点击Apply 保存,到此Job配置完成!

    三、配置用户和Security

    (1)在“系统管理–管理用户–用户列表–admin处点击进去–左边侧边栏–设置”设置用户API Token!找到等会会用!

    这里写图片描述

    可以进行Change!

    (2)然后在“系统设置->Configure Global Security”,去掉防止跨站点请求伪造的勾,这样我们就可以在浏览器和码云的webhook访问到api的地址了,不然我们把用户名和密码放到url 中,还是不能访问。

    这里写图片描述

    四、配置码云WebHooks

    找到WebHooks配置界面,在POST地址框中输入如下格式内容:

    http://<User ID>:<API Token>@<Jenkins IP地址>:端口/generic-webhook-trigger/invoke 

    具体如下:

    a、User ID:既是“三(1)”中的User ID,我的是admin;

    b、API Token:既是“三(1)”中的API Token,例如我的是8c1d11114ab111111111fdf21111a6a97;

    c、Jenkins IP地址:就是你的Jenkins的服务器IP地址,这个必须是公网IP地址,例如我的是210.41.223.54;

    d、端口:就是Jenkins服务器的端口;

    e、后边的内容就是Generic Webhook Trigger 插件的地址,无需改变;

    例如我的配置为:

    http://admin:8c1d11114ab111111111fdf21111a6a97@210.41.223.54:8010/generic-webhook-trigger/invoke 

    点击提交之后,界面如下:

    这里写图片描述

    URL后边的密码是,是jenkins用户admin的账户密码。

    然后点击“测试” 看一下Jenkins是否开始运行!

    至此!全部配置已经完成,如有疑问欢迎留言!共同学习!

    展开全文
  • git码云配置web hook钩子实现自动部署,git权限等问题,LAMP     __________________________________________________________________   这几天用git的时候就看到git有一个非常方便的功能可以实现自动部署到...

    由于博客搬家,我的博客将在: 懒惰的夜猫子  上发布

    点击下方链接即查看:

    git码云配置web hook钩子实现自动部署,git权限等问题,LAMP

     

     

    __________________________________________________________________

     

    这几天用git的时候就看到git有一个非常方便的功能可以实现自动部署到服务器。然后我就看啊看啊看,搜啊搜啊搜,知道了这玩意儿叫hook脚本,当我们在本机push到git平台时,git平台监听到了push命令,去触发服务器上的hook脚本,实现服务器代码更新,不用每次在上服务器拉一下代码。

    我在弄这个的时候遇到了很多问题,然而网上一搜,TMD就那几篇文章转过去转过来,根本不能解决我的问题!现在我就慢慢讲给大家。

    基本是这个意思吧,说不出专业的词汇,哈哈哈。

    我们还是来讲一讲真正的实现流程吧。

    1.把你的项目放到git平台。这个不需要教了吧?需要教就自己去百度,哈哈。毕竟我这篇文章是教你弄web hook。

    2.在服务器查看apache2(我用的apache服务)执行用户,执行代码:ps -ef | grep apache2   #我的服务名是apache2,这里根据自己真实的写,比如有的是httpd。

     

    如上图,我apache的运行用户是www-data。

    所以当你使用php(我用的PHP,灵活理解)执行shell脚本的时候会使用www-data用户去执行shell。我遇到的问题就在这里,出现了权限不正确。所以我们必须统一这个用户去执行所有的操作。

    在服务器也要用这个用户配置好git公钥,如:

    sudo -u www-data ssh-keygen -t rsa -C "xxxxx@xxxxx.com"

     

    配置好公钥后,你的git才拥有在这个用户下执行pull 的权限。

    3.使用apache执行用户克隆git平台上的代码,如:sudo -u www-data git clone git@xxxxxxx  

     

    当然可能会出现权限问题,说www-data用户 没有读写权限,你就需要把目录读写权限给www-data用户,这里也就不做讲解了。

    当克隆完成后我们开始第四步:

    4.创建一个接口,地址什么的自己配置就好,接口写一段儿执行shell的代码

    我这里是:

     

    <pre name="code" class="html"><?php 
    	shell_exec("cd /your/git/dir ; sudo -u www-data git pull 2<&1");

     

     

     

     

     

    
     

    就这么简单一句,我们在上git平台上配置好这个接口,我们就可以使用hook了。

     

    当你在本地push的时候,服务器就会调用这个接口执行sudo -u www-data git pull 实现自动部署。

    在平台可以设置个密码,password字段,他是一个json 当你接口实际使用的时候需要经过判断是不是你的git平台在调用你的接口,如果不是你可屏蔽掉。

    我的讲解就到这里了。

     

    不信你试试?

     

    我是因为这个权限问题搞了很久,如果还有问题我就没办法了,你就谷歌百度研究吧。

    哈哈,顺便弄好了发一篇博客给我们看看,以免下次遇到问题有TMD是那几篇!!!

    好了,就到这里吧。

    谢谢大家来看!

     

    展开全文
  • 目的:实现本地与服务器的数据同步更新,简图如下:   步骤: 1、在云服务器上安装宝塔,图形化界面还是很好用的 Centos安装脚本 yum install -y wget &amp;&amp;...2、在码云上...
  • 上一篇:使用Generic Webhook Trigger插件实现Jenkins+WebHooks(码云)持续集成介绍了如何使用Jenkins通用插件Generic Webhook Trigger 来实现码云WebHooks持续集成,但是有一个问题就是,如果项目是多分支的情况下...
  • 使用git码云实现代码的自动部署

    千次阅读 2018-08-31 14:05:26
    2、在本地创建git版本库,拉取码云上的test代码,与码云上的test项目建立连接 3、远程工作服务器克隆码云上的test代码,与码云上的test项目建立连接 4、在远程服务器上的工作目录建立一个webhooke.php文件,作为回...
  • php项目自动部署(利用webhook

    千次阅读 2017-10-15 17:33:51
    1.先来讲一下自动部署的原理,一般在我们push代码的时候,可以自动请求webhook中设置的url,完成一次请求与响应。那么只要我们设置的url地址请求的php文件内容是执行命令行git push命令,则可以实现每次在本地push推...
  • 码云(Gitee)的WebHooks功能,可以在我们每次提交代码后,向我们设定的地址post一个更新的json信息,这样我们就可以根据该信息,来自动拉去我们的代码,实现自动同步功能.第一步 配置WebHooks在[码云](https://gitee.com/)...
  • 项目组已实现通过Jenkins进行构建,最近构建...考虑到Gogs 的webhook可以检测push事件后进行处理,我们决定把整个构建做成自动化,实现开发推送代码到仓库后,自动触发Jenkins构建。一、Jenkins安装Generic Webho...
  • 目的:希望web程序push到gitee上后,自动pull到阿里云服务器,实现本地与服务器的数据同步更新 借鉴宝塔论坛的方法:https://www.bt.cn/bbs/thread-5348-1-1.html 服务器环境:centos7.3,Nginx 项目目录: /...
  • jenkins+webhook区分多项目多环境

    千次阅读 2018-04-24 15:27:55
    我的方法是项目区分带在webhook url,环境区分是通过分支名做管理 jenkins插件安装 获取jenkins的webhook url api token url 配置git仓库的webhook 配置jenkins项目 插件变量解析介绍 项目变量 环境变量 添加...
  • 码云+阿里云webhook的配置过程与深坑

    千次阅读 2018-06-20 12:04:44
    最近在学习小程序,希望web程序push到gitee上后,自动pull到阿里云服务器,实现本地与服务器的数据同步更新。1.首先在gitbee上新建一个项目,并在阿里云上安装git,推荐yum install git,具体过程略。2.切换到web根...
  • Gitee Jenkins Plugin码云持续集成插件

    千次阅读 2018-08-21 22:35:29
    目录 ... 添加码云链接配置 添加码云APIV5私人令牌 构建任务配置 新建构建任务 源码管理配置 触发器配置 WebHook密码配置 构建后步骤配置 构建结果回评至码云 构建成...
  • 通过webhook自动拉取代码

    千次阅读 2019-07-08 11:39:50
    使用webhook自动拉取代码,分下面几步 将web目录所有者置为nginx用户,因为我们需要通过http请求来执行git pull这个命令。 chown -R www-data:www-data /xxx/nbfuli.top 服务器上生成公钥 ssh-keygen -t rsa -C ...
  • 文章目录配置公钥配置 WebHook可能遇到的问题 配置公钥 为 Web 服务器所属的 www 用户生成密钥 sudo -Hu www ssh-keygen -t rsa -C 'your email' -f /home/www/.ssh/gitee_id_rsa 在 /home/www/.ssh 目录下新建...
  • 使用宝塔面板配置webhook

    千次阅读 2019-04-29 11:14:41
    前言:最近开发用的测试服务器搭建了宝塔面板,在团队开发的时候为了方便,使用webhook不用上服务器自己手动拉代码,现在就说说宝塔webhook的配置 1.先来说说git仓库 git仓库有很多代码托管平台,Github、Gitee、...
  • 使用码云做持续集成

    千次阅读 2017-10-24 13:31:30
    1、注册账号2、新建一个项目3、确定开发流程项目地址 https 码云的https链接地址来和码云上的项目交互的时候,根据项目的特性,...克隆 git clone https://gitee.com/hjsiamcer/lnmp.git pullgit pull origin master参
  • jenkins配置码云自动部署

    千次阅读 2019-05-16 15:45:29
    1. 需求背景 公司有后台项目和前端项目,后台和前端是分开部署的,后台是用svn进行代码管理,并且通过jenkins进行持续集成和构建,但是前端还是用着最原始的方式通过上传js,html文件到web服务器进行发布,主要是...
  • 码云WebHooks自动化部署

    千次阅读 2018-03-23 17:58:31
    目的:不用每次代码git提交以后,再去服务器pull一次。比设置定时任务的好处是:不用一直请求,而是push时触发具体步骤:1. 码云上建库2. 服务器上git配置2.1安装git2.1.1、yum install curl-devel expat-devel ...
1 2 3 4 5 ... 17
收藏数 333
精华内容 133
关键字:

webhook 码云git 自动