一、背景
有4个项目,每个项目对应多个git仓库,需要统计这4个项目下指定5位成员指定日期内的代码提交次数及message中包含jiraID的次数
二、实现
1、将4个项目名写入项目清单
vim pro.list
aiqa
aitr
nlp
pdf
2、分别将每个项目对应的多个git仓库名称写入对应项目的git仓库清单中
3、将需要统计的用户写入用户清单
vim wzzuserlist
luhuiguo
fanmj
lihr25646
shihj
chenyang24281
4、将需要统计的git仓库拉取到本地(可写个脚本批量clone)
git clone https://username:password@giturl/test.git
获取完毕目录如下
5、编写统计脚本
vim 3.sh
set -e
#!/bin/bash
# $1起始日期 $2截止日期
echo "" >count.list
for o in `cat /jenkins/workspace/count_git/all.list`
do
echo "项目名称$o" >>/jenkins/workspace/count_git/count.list
echo "------------">>/jenkins/workspace/count_git/count.list
for i in `cat /jenkins/workspace/count_git/wzzuserlist`
do
k=0
l=0
m=0
n=0
for p in `cat /jenkins/workspace/count_git/$o.list`
do
cd /jenkins/workspace/count_git/$p
git pull
git branch -a >wzzbranchlist
sed -i '2d' wzzbranchlist
sed -i -r 's/.* //' wzzbranchlist
for j in `cat wzzbranchlist`
do
k=($(git log $j --author="$i" --after="$1 00:00:00" --before="$2 23:59:59" |grep $i |wc -l))
l=($(git log $j --author="$i" --after="$1 00:00:00" --before="$2 23:59:59" |grep JIRA |wc -l))
m=$(($m+$k))
n=$(($n+$l))
#echo "$i 更新$j 总次数$m"
#echo "$i 更新$j 带jira单号$n"
done
done
echo "$i $m $n">>/jenkins/workspace/count_git/count.list
done
echo " ">>/jenkins/workspace/count_git/count.list
done
echo ""
echo ""
echo "统计结果如下"
cat /jenkins/workspace/count_git/count.list
6、创建jenkins任务count_git(pipeline)
pipeline {
agent any
parameters {
string(name:'start_date',defaultValue:'2019-01-01', description: '请填写统计的起始日期,如2019-01-01')
string(name:'end_date',defaultValue:'2019-01-31', description: '请填写统计的截止日期,如2019-01-31')
}
stages {
stage('统计') {
steps {
sh"""
./3.sh ${params.start_date} ${params.end_date}
"""
}
}
}
}
7、构建结果如下