Python实现简易GitLab周期使用监控

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绿蜡客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值