import gitlab
import numpy as np
import pandas as pd
import xlsxwriter as xw
import datetime
import sys
# 定义所需变量
GitLab_URL = sys.argv[1]
TOKEN = sys.argv[2]
BEGIN_TIME = sys.argv[3]
END_TIME = sys.argv[4]
def get_gitlab_information(url, token, begin_time, end_time):
# 登录GitLab服务器
gl = gitlab.Gitlab(url, token)
# 当前时间
print(datetime.datetime.today().strftime('%Y-%m-%d-%a-%I'))
# 遍历获取所有项目信息
for project in gl.projects.list(all=True, as_list=False):
# 展示命名空间、描述、http访问路径信息
print("----------------show message body-----------------")
print("项目HTTP访问路径:" + project.http_url_to_repo)
print("项目所属空间:" + project.path_with_namespace)
if len(project.description) == 0:
print("项目描述信息:" + "无描述信息")
else:
print("项目描述信息:" + project.description)
print("----------------show message body-----------------")
# 获取所有分支人员提交信息
print(begin_time + " to " + end_time + " commit message:")
branches = project.branches.list()
# 项目非空置时进行信息获取
if len(branches):
# 遍历分支获取提交信息
for i in branches:
branching = i.name
# 获取所有某段时间内commit信息
commits = project.commits. \
list(all=True, query_parameters={'since': begin_time, 'until': end_time, 'ref_name': branching})
# 有更新时进行信息展示
if len(commits):
# 遍历逐条获取有效提交用户名、变更数据、分支、变更时间信息
for c in commits:
if ('Merge' in c.message) and ('into' in c.message):
print("跳过merge产生的commit信息")
else:
print(project.commits.get(c.id).committer_name, project.commits.get(c.id).stats,
branching, project.commits.get(c.id).committed_date)
else:
print(branching + " 分支未更新!")
else:
print("空置项目: " + project.http_url_to_repo)
if __name__ == '__main__':
get_gitlab_information(GitLab_URL, TOKEN, BEGIN_TIME, END_TIME)
Python实现简易GitLab周期使用监控
最新推荐文章于 2024-08-23 09:50:17 发布