使用git_stats 统计分析git 仓库代码&& 集成webhook

前几天写过一个使用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

posted on   荣锋亮  阅读(821)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2018-05-08 autoconf 简单demo试用
2018-05-08 homeland 开源论坛系统搭建试用
2014-05-08 oracle 、sql server 、mysql 复制表数据
2014-05-08 C# 使用oledb 方式连接本地或者远程oracel 数据库的方式

导航

< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5
点击右上角即可分享
微信分享提示