美文网首页
python-gitlab 进行分支管理,项目文件添加

python-gitlab 进行分支管理,项目文件添加

作者: 新元素_max | 来源:发表于2022-09-20 11:28 被阅读0次

使用python-gitlab 进行分支管理,给所有项目增加相同文件,

import common_data
import gitlab

gitlab_host = 'https://xxxxx.com'
gitlab_token = "xxxxxxxxxxx"
gl = gitlab.Gitlab(gitlab_host, private_token=gitlab_token)


# group = gl.groups.get(group_id)
# projects = group.projects.list(all=True)
# print(len(projects))


def get_branch_info(project_id):
    # # 通过指定id 获取 project 对象
    project_info = gl.projects.get(project_id)
    # branch_info = gl.projects.get(project.id)
    # branches = project_info.branches.list(get_all=True)
    # branch_v4_6_0 = project_info.branches.get('v4.5.0')
    # print(branch_v4_6_0)
    # branch = project_info.branches.create({'branch_name': 'xxxxx', 'ref': 'v4.5.0'})
    tags = project_info.tags.list()
    print("before create ", tags)
    last_tag_name = tags[0].attributes["name"]
    if last_tag_name == 'testv4.5.0':
        print("the tag name %s is already exists" % last_tag_name)
    else:
        tag = project_info.tags.create({'tag_name': 'testv4.5.0', 'ref': 'v4.5.0'})
        print("the tag %s create " % tag)


# 0.新建分支
def create_branch(project_name, branch_name):
    project = gl.projects.get(common_data.project_name_dir[project_name])
    branches = project.branches.list(get_all=True)
    branches_name = []
    i = 0
    while i < len(branches):
        branches_name.append(branches[i].attributes["name"])
        i += 1
    print(branches_name)
    if branch_name not in branches_name:
        print(branch_name)
        print("not exits project ", branch_name)
        branch = project.branches.create({'branch': branch_name, 'ref': 'v4.6.0'})
        print("finish create branch ", branch)
    else:
        print("the branch %s already exits" % branch_name, project_name)


# 1.给group组的所有项目打tag,
def create_tags(project_name, tag_name):
    # # 通过指定name 获取 project 对象
    project = gl.projects.get(common_data.project_name_dir[project_name])

    tags = project.tags.list()
    if len(tags) != 0:
        last_tag_name = tags[0].attributes["name"]
        if last_tag_name == tag_name:
            print("the tag name %s is already exists" % last_tag_name)
        else:
            tag = project.tags.create({'tag_name': tag_name, 'ref': tag_name})
            print("the tag %s created " % tag)
    else:
        tag = project.tags.create({'tag_name': tag_name, 'ref': tag_name})
        print("the tag %s created " % tag.attributes["name"])


# 2.分支保护设置
def branch_protect(project_name, branch):
    project = gl.projects.get(common_data.project_name_dir[project_name])
    # print(project.attributes["name"])
    try:
        p_branches = project.protectedbranches.get(branch)
    except Exception as err:
        print("the branch is not protected", err)
        p_branch = project.protectedbranches.create({
            'name': branch,
            'merge_access_level': gitlab.const.AccessLevel.DEVELOPER,
            'push_access_level': gitlab.const.AccessLevel.MAINTAINER
        })
        print(branch, "protected done")
    else:
        print(project_name, " already protected", p_branches.attributes["name"])


# 3.增加新文件
def add_new_file(project_name):

    project = gl.projects.get(common_data.project_name_dir[project_name])
    # f = project.files.get(file_path='.gitlab-ci.yml', ref='CICD_test')
    # print(f)
    try:
        f = project.files.get(file_path='.gitlab-ci.yml', ref='v4.6.0')
    except Exception as err:
        print("the file in %s is not exits" % project_name, err)
        file_content = open('gitlab-ci.yml', 'r', encoding='UTF-8').read()
        nf = project.files.create(
            {'file_path': '.gitlab-ci.yml', 'branch': 'v4.6.0',
             'content': file_content, 'author_email': 'xxxxx@xxx.com',
             'author_name': 'xxxx',
             'commit_message': 'Add CICD config file'})
        print("add gitlab-ci.yml done", nf)
    else:
        print("the file is exits", f)
#
# get_branch_info(25506)

#common_data 所有项目的和对应projectID

# for project_obj in common_data.project_name_dir:
#     branch_protect(project_obj, "v4.6.0")

相关文章

  • python gitlab 最近的变动分支

    使用python-gitlab库 获取最新的提交分支

  • git命令总结

    1、克隆项目命令 克隆\下载项目(默认主分支): 克隆远程分支 2、推送文件相关命令 添加文件到暂存区 提交暂存区...

  • Git入门到高级系列1-git安装与基础命令

    视频课程地址 腾讯课堂 为什么要进行项目文件的版本管理 代码备份和恢复 团队开发和协作流程 项目分支管理和备份 g...

  • Git命令总结

    一、查看、添加、提交、删除、找回、重置修改文件 二、Git 本地分支管理 1、查看、切换、创建和删除分支 2、分支...

  • git分支合并

    添加文件 提交文件 拉取文件 提交到自己分支 切换分支 拉取分支上文件 需要合并分支 提交

  • git常用命令

    管理项目 git仓库的初始化 添加所有的文件到git库里 查看工作域是否干净 "初始化分支" 提交信息 推送(-u...

  • TODO gitlab 设置在仓库某分支进行测试代码

    找到项目目录下的.gitlab-ci.yml文件, 如图1图1 2.在only中添加需要进行测试的分支名, 如图2...

  • 常用Git命令

    查看、添加、提交、删除、找回,重置修改文件 查看文件diff 查看提交记录 tig Git 本地分支管理 查看、切...

  • git command help

    Git命令 查看、添加、提交、删除、找回,重置修改文件 查看文件diff 查看提交记录 Git 本地分支管理 查看...

  • Git常用命令

    查看、添加、提交、删除、找回,重置修改文件 查看文件diff 查看提交记录 Git 本地分支管理 查看、切换、创建...

网友评论

      本文标题:python-gitlab 进行分支管理,项目文件添加

      本文链接:https://www.haomeiwen.com/subject/hevbortx.html