gitlab统计任务

 shell
 

gitlab统计任务,单个项目很简单,但是对于所有项目,可以想象。。。

问题描述:

最近接到一个任务,要统计这两个季度git仓库所有项目变更情况,当时听到这个任务的时候一脸懵逼…一个项目还简单,但是对于仓库里面所有的项目,这个想想就…
时间比较紧,老大只给2个小时左右的时间

解决思路

  • 获取所有项目,项目名&git地址
  • 查找单个项目(git)变更情况
  • 统计所有项目的总计

实现

  • 获取所有项目,项目名&git地址

    可以通过jenkins/git去扫描,因为我们这里上线的项目都是通过jenkins ci去构建的,因此,所有的项目名、git地址都可以通过扫描jenkins去获取

1
2
3
4
5
6
7
8
9
10
11
#获取所有git地址(dev/test所有项目的)
find $JENKINS_HOME/jobs -name config.xml |xargs -i grep -o '<url>.*</url>' {} | sed -e 's/<url>//' -e 's/<\/url>//' | sort | uniq >gitlab_project.txt

#download代码
for project in $(cat ~/gitlab_project.txt);do echo $project; git clone $project; done

#统计2019-04-01~2019-06-30所有代码变更行数
for project in $(ls ./); do cd $project; gitcs=$(git log --stat --since="2019-4-01" --before="2019-06-30" |perl -ne 'END { print $c } $c += $1 if /(\d+) insertions/'); echo $project,$gitcs ;cd ..;done > ~/gitchange.csv

#统计2019-04-01~2019-06-30所有代码commit次数
for project in $(ls ./); do cd $project; gitcs=$(git log --oneline --since==2019-04-1 --until=2019-06-30 | wc -l); echo $project,$gitcs ;cd ..;done > ~/git_commit.csv

 评论