python去访问gitlab的方法

我使用的是python3.8

这里需要用到一个库,是python-gitlab

  1. 先去gitlab生成一个token

这里有一个小坑,我花了1天才排除,就是建立token的时候,默认需要把API的权限给选择上,要不然,你用这个token,根本没有办法做任何的事情。怎么生成token,上网搜搜吧。

  1. 新生成一个新的gitlab操作的class

我总共就用了2个函数

import gitlab
import base64

# pip install python-gitlab


class Gitlabapi:
    def __init__(self, url, token):
        self.url = url
        self.token = token
        self.conn = gitlab.Gitlab(url=self.url, private_token=self.token)

    def get_file_blob(self, in_id, sha):
        project = self.conn.projects.get(in_id)
        return_file = project.repository_blob(sha)
        content = base64.b64decode(return_file['content'])
        return content

    def get_project_tree(self, in_id, path=''):
        project = self.conn.projects.get(in_id)
        if path:
            items = project.repository_tree(path=path, ref='master', get_all=True)
        else:
            items = project.repository_tree(ref='master', recursive=True, get_all=True)
        return items
  1. 直接调用

#当然了,这里要import那个class

git_host = "http://abc.com" #这个就是标准的网址就可以
token = 'XXXXXXXXX'
new_git = Gitlabapi.Gitlabapi(git_host, token)
project_items = new_git.get_project_tree(in_id=20821)
  1. 因为我是想遍历某个项目的文件和文件夹,所以,我又在gitlab的库里面增加了一个函数

    def get_project_tree(self, in_id, path=''):
  1. 接下来遍历那个文件夹,然后去取里面的所有的文件和内容

real_sha = temp_file['id']
file_content = new_git.get_file_blob(in_id=20821, sha=real_sha)

  1. 我自己而言,这个文件是yaml格式的,我就转成了yaml继续处理

yaml_type_file = yaml.load(file_content, Loader=yaml.FullLoader)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python可以通过GitLab API来访问GitLabGitLab API是一个RESTful API,它允许你通过HTTP请求来与GitLab进行交互。你可以使用Python的requests库来发送HTTP请求,并处理返回的数据。 首先,你需要获取GitLab访问令牌(access token)。在GitLab中,你可以在用户设置中生成一个访问令牌。然后,你可以使用这个访问令牌来进行API请求。 下面是一个使用Python访问GitLab API的示例代码: ```python import requests # 设置GitLab的URL和访问令牌 gitlab_url = 'https://gitlab.example.com/api/v4' access_token = 'your_access_token' # 发送GET请求获取项目列表 def get_projects(): url = f'{gitlab_url}/projects' headers = {'Authorization': f'Bearer {access_token}'} response = requests.get(url, headers=headers) projects = response.json() return projects # 发送POST请求创建新项目 def create_project(name): url = f'{gitlab_url}/projects' headers = {'Authorization': f'Bearer {access_token}'} data = {'name': name} response = requests.post(url, headers=headers, json=data) project = response.json() return project # 示例调用 projects = get_projects() print('项目列表:') for project in projects: print(project['name']) new_project = create_project('My New Project') print('创建的新项目:') print(new_project['name']) ``` 以上代码中,`get_projects`函数发送了一个GET请求来获取项目列表,`create_project`函数发送了一个POST请求来创建新项目。你可以根据自己的需求修改和扩展这些函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值