CI/CD_Gitlab-统计代码提交情况

Python调用API

 第三方库python-gitlab
    pip3 install python-gitlab
 步骤
    01.获取url地址--是最开始网页的地址  https://gitlab.***.com/
    02.获取 gitlab 管理员账号的私有令牌
	03.
	
 思路:
    从commit中获取提交的行数信息
	
	
说明
     保护API 用到的 private_token,一般会将其写到系统的配置文件中去	   gitlab.Gitlab.from_config
	 ## 得到第一页project列表  projects = gl.projects.list()
	 ## 得到所有project        projects = gl.projects.list(all=True)
	 
	stats里面就是我们想要的代码量了,
	     additions为新增,deletions为删除,total为总量。
		                修改操作实际上是删除之后再新增。
     需要注意的是,这里统计出来的代码量是代码行数

代码示例

import gitlab
import pandas as pd

# gitlab 代码仓库地址
url_gitlab = https://gitlab.***.com/
# 上面获取的 gitlab 私有令牌
private_token= '**********'
# 获取 gitlab 可操作对象
glclient = gitlab.Gitlab(url_gitlab,private_token=private_token,api_version='4')

# 获取所有 project 的 name 和 id
for clientobj in glclient.projects.list(all=True, as_list=False):
    name = clientobj.name
    id = clientobj.id
    description=  clientobj.description
    default_branch=  clientobj.default_branch
    print(id,name,description,default_branch)
##特定项目
start_time = '2021-05-20'
end_time   = '2022-04-20'

# # 根据 id 查找项目
smartcar_id = 10
project = glclient.projects.get(smartcar_id)

## 把每个项目下面的所有分支查出来
branches = project.branches.list(all= True)
for i,branch in enumerate(branches):
    print(i,branch)
# main_branche =  project.branches.get('main')
print(branches)
# 然后再遍历每一个分支
for i,branch in enumerate(branches):
    # 获取一段时间内,指定分支的 commits
    commits = project.commits.list(all= True,query_parameters={'since': start_time,'until':end_time, 'ref_name': branch.name})
    # 然后再遍历每个提交记录,查询每个提交记录的人和量
    for num, commit in enumerate(commits) :
        com = project.commits.get(commit.id)
        # 提交commit开发者
        committer_name = com.committer_name
        commit_title  = com.title
        committed_date = com.committed_date

        # 提交代码 增量、删除、总量
        stats = com.stats
        # 增量代码
        additions = stats['additions']

        nm_list = ["branch",'branch_name','num','committed_date','committer_name','additions','deletions','total','commit_title']
        data_set = [i,branch.name,num,committed_date,committer_name,stats.get('additions'),stats.get('deletions'),stats.get( 'total'),commit_title]
        nm_relation_match = dict(zip(nm_list,data_set))
        print(nm_relation_match)
        data_set_df = pd.DataFrame(nm_relation_match,index=[num])
        data_set_df.to_csv("D:\data\gitlab_auto_stat.csv",header =False,index=False,encoding="utf8",mode='a') 

API 说明

 Getting started with the CLI
 Using the Using the docker image
     gitlab 还集成了 docker registry 的功能,可以用来作为一个 docker 镜像私有仓库使用。Gitlab 默认不打开 docker registry 的功能,需要修改配置打开
  projects = gl.projects.list(visibility='public')

  project.branches.list project.branches.create	  project.branches.delete    branch.protect()
  project.tags.list     project.tags.create       project.tags.delete
  project.commits.list
  project.mergerequests.list  project.mergerequests.create project.mergerequests.delete
  project.repository_compare

docker加命令行

 容器命令+CLI== 容器加命令行
    docker run -it --rm registry.gitlab.com/python-gitlab/python-gitlab:latest project get --id gitlab-org/gitlab
	docker run -it --rm -v /path/to/python-gitlab.cfg:/etc/python-gitlab.cfg registry.gitlab.com/python-gitlab/python-gitlab:latest <command> ...
	  
	 命令
	    gitlab project list    gitlab project list --all   gitlab group-project list --all --group-id 1
		gitlab user get --id 3
		gitlab project-commit get --project-id 2 --id a43290c

参考:

 python使用gitlab-api	  https://www.cnblogs.com/rxysg/p/15683537.html
 python-gitlab https://python-gitlab.readthedocs.io/en/stable/
 python操作gitlab API	https://www.imooc.com/article/47592	 
 python gitlab模块_python操作gitlab API过程解析  https://blog.csdn.net/weixin_35899659/article/details/112937660
 Java-API  GitLab4J™ API (gitlab4j-api) Java Client Library for the GitLab REST API https://github.com/gitlab4j/gitlab4j-api
 python 统计gitlab代码量 https://www.cnblogs.com/shenh/p/14518353.html	 
posted @ 2022-04-25 10:15  辰令  阅读(2401)  评论(0编辑  收藏  举报