自定义git触发编译脚本

1.通过 gitee push之后触发事件,执行WebHooks请求到我们设置的地址
2.在设置请求的地址里面判断当前commit里面是否包含某个”需要自动化编译的标示”,如果包含的话执行Linux上面的脚本编译自动部署项目
eg: 例子上面给出的是判断当前commit里面是否包含10086,如果包含的话执行Linux脚本

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
(value = "/common/run",method = RequestMethod.POST)public ResponseEntity (HttpServletRequest request) throws  ParseException {    try {        List<String> jsonList = org.apache.commons.io.IOUtils.readLines(request.getInputStream());        if (Objects.nonNull(jsonList) && jsonList.size()>0){            StringBuilder jsonBuilder = new StringBuilder();            jsonList.forEach(str->{                jsonBuilder.append(str);            });            JSONObject jsonObject = JSON.parseObject(jsonBuilder.toString());            JSONArray commitsJSONArray = (JSONArray)jsonObject.get("commits");            boolean flag = false;            for(int i=0,length = commitsJSONArray.size();i<length;i++){                JSONObject  childJSONObject = (JSONObject) commitsJSONArray.get(i);                String message = (String) childJSONObject.get("message");                log.info("获取到commit里面的消息 {}",message);                if (message.contains("10086")){                    flag = true;                }            }            log.info("flag的值{}",flag);            if (flag){                process(new String[]{"sh","/root/run.sh"});            }        }    } catch (Throwable throwable) {        throwable.printStackTrace();    }    return ResponseEntity.ok("执行完毕");}

 *  调用脚本 * @param cmdArray * @throws Throwable */protected void process(String[] cmdArray) throws Throwable {    ProcessBuilder pb = new ProcessBuilder(cmdArray);    pb.redirectErrorStream(true);    Process p = null;    BufferedReader br = null;    try {        p = pb.start();        br = new BufferedReader(new InputStreamReader(p.getInputStream()));        String line = null;        log.info("Invoke shell: {}", StringUtils.join(cmdArray, " "));        while ((line = br.readLine()) != null) {            log.info(line);        }        p.waitFor();    } finally {        if (br != null) {            br.close();        }        if (p != null) {            p.destroy();        }    }}

原文:大专栏  自定义git触发编译脚本

原文地址:https://www.cnblogs.com/chinatrump/p/11615234.html

时间: 2024-11-08 21:33:45

自定义git触发编译脚本的相关文章

自定义Git【转】

本文转载自:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 自定义Git 在安装Git一节中,我们已经配置了user.name和user.email,实际上,Git还有很多可配置项. 比如,让Git显示颜色,会让命令输出看起来更醒目: $ git config --global color.ui true 这样,Git会适当地显示不同的颜色,比如git status命令: 文件名

Git详解之七:自定义Git

自定义 Git 到目前为止,我阐述了 Git 基本的运作机制和使用方式,介绍了 Git 提供的许多工具来帮助你简单且有效地使用它. 在本章,我将会介绍 Git 的一些重要的配置方法和钩子机制以满足自定义的要求.通过这些工具,它会和你和公司或团队配合得天衣无缝.(伯乐在线注:如果你对Git还不了解,建议从本Git系列第一篇文章开始阅读) 7.1  配置 Git 如第一章所言,用git config配置 Git,要做的第一件事就是设置名字和邮箱地址: 1 2 $ git config --globa

7 自定义 Git

到目前为止,我阐述了 Git 基本的运作机制和使用方式,介绍了 Git 提供的许多工具来帮助你简单且有效地使用它. 在本章,我将会介绍 Git 的一些重要的配置方法和钩子机制以满足自定义的要求.通过这些工具,它会和你和公司或团队配合得天衣无缝. 7.1 配置 Git 如第一章所言,用git config配置 Git,要做的第一件事就是设置名字和邮箱地址: $ git config --global user.name "John Doe" $ git config --global u

Git学习 -- 自定义Git

忽略特殊文件 在工作区创建.gitignore文件,编写内容 # Windows: Thumbs.db ehthumbs.db Desktop.ini # Python: 忽略Python编译产生的.pyc..pyo.dist等文件或目录 *.py[cod] *.so *.egg *.egg-info dist build # My configurations: db.ini deploy_key_rsa 然后add和commit该文件 此后当工作区出现.gitignore中类型文件时,git

VLCKit编译脚本的防坑修改

前言:编译过VLC的朋友们可能都知道,整个流程编译下来,在没任何错误的情况下基本上需要3到4个小时,网速慢点的可能需要7-8个小时,如果中途出现错误,很可能需要重新来过,那么有什么方法可以防坑呢? 作者在尝试编译多次VLC之后总结和修改了编译脚本. 据我观察,编译VLC的时候,大部分时间都会消耗在buildMobileVLCKit.sh 文件中153行附近的 git clone git://git.videolan.org/vlc.git vlc 这行代码上. 所以防坑的原则就是修改脚本只执行这

ios及android两个平台下x264编译脚本

今年做了一些音视频编解码工作,此前做图形.图像类工作多一些,做了音视频编解码才知道,这项工作还是很有趣.很神奇的.比如采集几十M的视频数据,经过编码存储后,文件体积仅仅有几十K大小,这当中就需要x264来发挥神奇了.下面将手机端ios及android两个平台下x264编译脚本分享出来,希望对正在做相关工作的同学有帮助.x264源码地址:http://www.videolan.org/developers/x264.html 1. ios平台下x264编译.这个编译脚本修改自:https://gi

Gradle Android最新自动化编译脚本教程

转自:http://blog.csdn.net/changemyself/article/details/39927381 一.前言 Gradle 是以 Groovy 语言为基础,面向Java应用为主.基于DSL(领域特定语言)语法的自动化构建工具. 上面这句话我觉得写得很官方,大家只需知道Gradle可以用来android开发中进行多个项目依赖的自动化编译脚本,知道这点也就知道我们使用它的目的: 为什么不使用Ant做自动化编译脚本,因为ant上手快,但是维护起来太不方便了,有了Gradle你可

自定义Git

在"安装Git"一节中,我们已经配置了user.name和user.email,实际上,Git还有很多可配置项. 比如,让Git显示颜色,会让命令输出看起来更醒目: $ git config --global color.ui true 这样,Git会适当地显示不同的颜色,比如git status命令: 文件名就会标上颜色. 我们在后面还会介绍如何更好地配置Git,以便让你的工作更高效. 自定义Git,布布扣,bubuko.com

FFmpeg示例程序合集-批量编译脚本

此前做了一系列有关FFmpeg的示例程序,组成了<最简单的FFmpeg示例程序合集>,其中包含了如下项目:simplest ffmpeg player:                  最简单的基于FFmpeg的视频播放器simplest ffmpeg audio player:       最简单的基于FFmpeg的音频播放器simplest ffmpeg pic encoder:        最简单的基于FFmpeg的图像编码器simplest ffmpeg video encoder