前几天写过一个使用gitstats 统计分析代码的,但是那个因为开发的问题,对于直接和容器集成是有问题的,统计需要进入容器执行
命令,对于自动构建的还不是很方便,所以使用了git_stats

项目使用docker-compose 运行,同时使用docker in docker 模式运行,同时集成webhook

环境准备

  • docker-compose 文件
version: "3"
services:
hooks:
build: ./
image: dalongrong/webhook-docker-client
command: ["-verbose", "-hooks=/etc/webhook/hooks.json","-hotreload"]
tty: true
volumes:
- "./conf/hooks.json:/etc/webhook/hooks.json"
- "./app.sh:/app.sh"
- "/var/run/docker.sock:/var/run/docker.sock"
- "./result:/gitstats"
- "./gitcode:/git"
ports:
- "9090:9000"
privileged: true
web:
image: nginx
ports:
- "8080:80"
volumes:
- "./result:/usr/share/nginx/html"
  • webhook 配置
[
{
"id": "webhook",
"execute-command": "/app.sh",
"command-working-directory": "/",
"include-command-output-in-response":true,
"trigger-rule":
{
"and":
[
{
"match":
{
"type": "value",
"value": "dalong",
"parameter":
{
"source": "payload",
"name": "username"
}
}
}
]
}
}
]
  • webhook 执行代码 app.sh

    说明通过docker in docker 执行,但是webhook容器中安装了docker 以及git

#!/bin/sh
HOSTPATH=/opt/rong/webhook-docker-in-docker
git clone https://github.com/wurstmeister/kafka-docker.git /git
docker info
docker run --rm -v $HOSTPATH/gitcode:/git:ro -v $HOSTPATH/result:/gitstats goodideal/docker-git-stats
  • dockerfile
FROM almir/webhook
RUN apk update && apk add docker && apk add git

原理说明

主要是通过数据卷的模式进行git 代码挂载,同时通过nginx 提供静态web 站点的访问,对于统计的构建,通过webhook触发
目前写的比较简单,实际上,我们可以进行基于git pull 模式的统计

运行&&测试

  • 启动
docker-compose up -d
  • 触发统计
curl -X POST \
http://localhost:9090/hooks/webhook \
-H 'Content-Type: application/json' \
-H 'Postman-Token: ba2d2fbf-62ad-4eda-b9a9-84091e19bdfb' \
-H 'cache-control: no-cache' \
-d '{
"username":"dalong"
}'
  • 效果





参考资料

https://github.com/goodideal/git_stats
https://github.com/rongfengliang/webhook-docker-in-docker

 
 
 
 

使用git_stats 统计分析git 仓库代码&& 集成webhook的更多相关文章

  1. 使用gitbase 分析git 仓库代码

      gitbase 是一个基于golang 开发的开源git 仓库sql 接口查询引擎,基于此工具,我们可以方便的分析git 仓库代码的情况 而且可以基于源码的分析,还是很强大的 安装 直接使用编译的 ...

  2. 使用gitstats分析git 仓库代码

    gitstats 是一个很不错的git 代码提交分析工具,可以帮助我们生成图表统计结果 工具文档信息 gitstats http://gitstats.sourceforge.net/ 安装 使用ce ...

  3. Jenkins(3)拉取git仓库代码,执行python自动化脚本

    前言 python自动化的脚本开发完成后需提交到git代码仓库,接下来就是用Jenkins拉取代码去构建自动化代码了 新建项目 打开Jenkins新建一个自由风格的项目 源码管理 Repository ...

  4. windows调起git bash执行sh脚本定时统计git仓库代码量

    本来挺简单的一个东西硬是弄了两天 心力交瘁 找了网上不少资料 整理一下发给大家 首先是统计每个人的代码量的git命令 在网上找的 我这里做了以下修改 git log --format='%aN'|so ...

  5. Linux(Ubuntu16.04)+GitLab8.17deb安装包搭建Git仓库(代码管理系统)

    1 下载GitLab安装包 2  执行安装命令 3 验证是否安装和启动成功 4 修改管理员密码 5 其它说明 5.1修改访问URL 5.2修改邮件配置 5.3修改web端口 1下载GitLab安装包 ...

  6. 关于.ssh出错,无法从远程git仓库拉代码

    背景:从windows开发环境改到ubuntu,将windows下生成的.ssh文件拷贝到ubuntu下,以clone远程git仓库代码 错误:sign_and_send_pubkey: signin ...

  7. Git中如何利用生成SSH个人公钥访问git仓库

    Git中如何利用生成SSH个人公钥访问git仓库方法(这里以coding平台为例): 1. 获取 SSH 协议地址 在项目的代码页面点击 SSH 切换到 SSH 协议, 获得访问地址, 请使用这个地址 ...

  8. 如何把本地git仓库托管到码云上

    提交代码到本地git仓库 git init git status git add . git status git commit -m "init my project"     ...

  9. [原创]SSH密钥访问Git仓库配置

    SSH密钥并非为了解决拉取git仓库代码时,需要频繁输入密码的问题. SSH是一种比较安全的协议,可以用来免去远程登录Linux等服务器时需要输入密码的繁琐过程. 命令: ssh user@serve ...

随机推荐

  1. 【题解】Luogu P5279 [ZJOI2019]麻将

    原题传送门 希望这题不会让你对麻将的热爱消失殆尽 我们珂以统计每种牌出现的次数,不需要统计是第几张牌 判一副牌能不能和,类似这道题 对于这题: 设\(f[i][j][k][0/1]\)表示前\(i\) ...

  2. (转).NET Core中实现AOP编程

    原文地址:https://www.cnblogs.com/xiandnc/p/10088159.html AOP全称Aspect Oriented Progarmming(面向切面编程),其实AOP对 ...

  3. 使用HttpClient调用接口

    一,编写返回对象 public class HttpResult { // 响应的状态码 private int code; // 响应的响应体 private String body;get/set ...

  4. 关于MVC接收Ajax调用无法访问的问题

    例如:下面代码有两个int类型的参数,如果Ajax调用时没有在data属性中为其赋值,AJAX会出500异常. public JsonResult GetList(int pageIndex, int ...

  5. 部署基于maven的springboot项目到linux服务器上

    目录 本地运行调试 导入数据库: 导入项目: 将项目打包: linux准备: 运行项目: 脚本运行 本地运行调试 导入数据库: 导入数据库的时候使用的是sqlYog导入navcat的脚本:由于两个应用 ...

  6. vue 异步渲染

    <!DOCTYPE html> <html> <head> <title> hello world vue </title> <met ...

  7. 安装仪表盘控件Iocomp会遇到的几个常见问题

    相信从事HMI和自动化开发专业的小伙伴在使用工业仪表盘和图表控件时,都很熟悉怎么安装和操作Iocomp产品(毕竟它功能太强大了,基本人手一份的节奏),但是小编想肯定还是有很多和小编一样的入门的伙伴在安 ...

  8. 【RAC】 RAC For W2K8R2 安装--卸载(八)

    [RAC] RAC For W2K8R2 安装--卸载(八) 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它 ...

  9. mysql replace into 实现存在则更新,不存在则插入

    测试用的mysql数据库: 新建测试表: CREATE TABLE `test` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `text` varchar(2 ...

  10. 通过request获取服务器相对路径及绝对路径

    一. String scheme = request.getScheme();//http String serverName = request.getServerName();//localhos ...