GitLab API для доступа ко всем деталям, связанным с открытыми запросами на слияние, используя Python

#python #api #gitlab

#питон #API #gitlab #python

Вопрос:

API GitLab для доступа ко всем деталям, связанным с открытыми запросами на слияние, с использованием Python.

Я пытаюсь сделать пользовательский интерфейс похожим на показанный ниже.

введите описание изображения здесь

Ответ №1:

https://docs.gitlab.com/ee/api/graphql/reference/index.html#mergerequest

Простая демонстрация прямого доступа к API GraphQL:

 import requests

cursor = None
while True:
    response = requests.post("https://gitlab.com/api/graphql",
                             json={
                                 "query": """
query ($projectId: ID!, $cursor: String) {
  project(fullPath: $projectId) {
    mergeRequests(state: opened, after: $cursor) {
      nodes {
        approved
        author {
          name
        }
        createdAt
        id
        sourceBranch
        title
        updatedAt
      }
      pageInfo {
        endCursor
      }
    }
  }
}""",
                                 "variables": {
                                     "projectId": "gitlab-org/gitlab",
                                     "cursor": cursor
                                 }
                             })
    response.raise_for_status()
    response = response.json()
    if "errors" in response:
        raise RuntimeError(response["errors"])
    for merge_request in response["data"]["project"]["mergeRequests"]["nodes"]:
        print(merge_request)
    cursor = response["data"]["project"]["mergeRequests"]["pageInfo"][
        "endCursor"]
    if cursor is None:
        break
  

Замените исходное использование requests на любую клиентскую библиотеку GraphQL, которую вы выберете. Замените gitlab.com и gitlab-org/gitlab экземпляром и проектом GitLab, которые вы используете. Протестируйте запрос и прочитайте интерактивную документацию по адресу https://gitlab.com/-/graphql-explorer (опять же, замена gitlab.com на соответствующий экземпляр; переменные запроса можно перетащить вверх из-под области ввода запроса).