使用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

猜你喜欢

转载自www.cnblogs.com/rongfengliang/p/10835851.html