自定义git触发编译脚本

Posted petewell

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义git触发编译脚本相关的知识,希望对你有一定的参考价值。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
(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触发编译脚本


以上是关于自定义git触发编译脚本的主要内容,如果未能解决你的问题,请参考以下文章

数据模型文件的自定义 Git 合并

git自定义项目钩子和全局钩子

如何使用带有自定义 bashrc 的 Git bash 运行脚本?

Xcode 自定义 shell 脚本正在减慢编译时间

zabbix的自定义监控项和触发器的配置

Zabbix的通知功能以及自定义脚本告警