使用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
使用git_stats 统计分析git 仓库代码&& 集成webhook的更多相关文章
- 使用gitbase 分析git 仓库代码
gitbase 是一个基于golang 开发的开源git 仓库sql 接口查询引擎,基于此工具,我们可以方便的分析git 仓库代码的情况 而且可以基于源码的分析,还是很强大的 安装 直接使用编译的 ...
- 使用gitstats分析git 仓库代码
gitstats 是一个很不错的git 代码提交分析工具,可以帮助我们生成图表统计结果 工具文档信息 gitstats http://gitstats.sourceforge.net/ 安装 使用ce ...
- Jenkins(3)拉取git仓库代码,执行python自动化脚本
前言 python自动化的脚本开发完成后需提交到git代码仓库,接下来就是用Jenkins拉取代码去构建自动化代码了 新建项目 打开Jenkins新建一个自由风格的项目 源码管理 Repository ...
- windows调起git bash执行sh脚本定时统计git仓库代码量
本来挺简单的一个东西硬是弄了两天 心力交瘁 找了网上不少资料 整理一下发给大家 首先是统计每个人的代码量的git命令 在网上找的 我这里做了以下修改 git log --format='%aN'|so ...
- Linux(Ubuntu16.04)+GitLab8.17deb安装包搭建Git仓库(代码管理系统)
1 下载GitLab安装包 2 执行安装命令 3 验证是否安装和启动成功 4 修改管理员密码 5 其它说明 5.1修改访问URL 5.2修改邮件配置 5.3修改web端口 1下载GitLab安装包 ...
- 关于.ssh出错,无法从远程git仓库拉代码
背景:从windows开发环境改到ubuntu,将windows下生成的.ssh文件拷贝到ubuntu下,以clone远程git仓库代码 错误:sign_and_send_pubkey: signin ...
- Git中如何利用生成SSH个人公钥访问git仓库
Git中如何利用生成SSH个人公钥访问git仓库方法(这里以coding平台为例): 1. 获取 SSH 协议地址 在项目的代码页面点击 SSH 切换到 SSH 协议, 获得访问地址, 请使用这个地址 ...
- 如何把本地git仓库托管到码云上
提交代码到本地git仓库 git init git status git add . git status git commit -m "init my project" ...
- [原创]SSH密钥访问Git仓库配置
SSH密钥并非为了解决拉取git仓库代码时,需要频繁输入密码的问题. SSH是一种比较安全的协议,可以用来免去远程登录Linux等服务器时需要输入密码的繁琐过程. 命令: ssh user@serve ...
随机推荐
- texlive2019安装
TeX Live 是 TUG (TeX User Group) 发布并维护的的 TeX 系统,可以称得上是TeX的官方系统,官网为:https://www.tug.org/texlive/ 1.通过最 ...
- Python爬虫系列:五、正则表达式
1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑. 正则表达式 ...
- 身份证验证PHP类
PHP根据身份证号,自动获取对应的星座函数,然后自动返回对应的星座,自动返回性别,判断是否成年 <?php class IdcardAction extends Action{ // PHP根据 ...
- Python学习日记(二十六) 封装和几个装饰器函数
封装 广义上的封装,它其实是一种面向对象的思想,它能够保护代码;狭义上的封装是面向对象三大特性之一,能把属性和方法都藏起来不让人看见 私有属性 私有属性表示方式即在一个属性名前加上两个双下划线 cla ...
- H3C IEEE 802.11无线局域网工作组
- Arm Qt编译Qt例程出错 GLES3/gl3.h: No such file or directory 解决方法
工作环境 PC:Ubuntu18.04QtCreator: 4.8.2交叉编译环境:野火imxull6开发板提供的 5-编译工具链->qt交叉编译工具 在之前博客配置成功的交叉编译环境,编译Qt ...
- 使用kubeadm部署k8s
k8s组件 master,node master中包括apiserver,scheduler,controller.etcd apiserver:负责接收用户请求,并且保存至etcd中. schedu ...
- python笔记--------一
作用域: 每个变量或函数都有自己的作用域. 每个函数都定义了一个命名空间,也称为作用域. 在最顶层有一个符号表会跟踪这一层所有的名称定义和和他们当前的绑定. 调用函数时,会建立一个新的符号表(常称为栈 ...
- Redis相关知识整理
Redis相关知识整理 1. Redis和MySQL的区别?a).mysql是关系型数据库,而redis是NOSQL,非关系型数据库.mysql将数据持久化到硬盘,读取数据慢,而redis数据先存储在 ...
- ES6中Number中的扩展
1.Number.parseInt() , Number.parseFloat() 在ES6中将parseInt()和parseFloat()都移植到Number对象上去,方法的行为保持不变. // ...