Краткий ответ: Конечно - все возможно. У GitLab отличный API (, включая создание MR ). Но я думаю, что идти по этому пути плохо. Вы должны использовать GitLab, как он разработан. Вы начинаете свой запрос на слияние слишком поздно. Запустите его до того, как вы начнете какую-либо работу, и ваш запрос на слияние останется открытым на всю продолжительность вашего филиала.
Длинный ответ:
Это идеальный рабочий процесс GitLab:
- Кто-то создает ВЫПУСК против хранилища. Может быть, запрос функции, может быть, настоящая проблема, что угодно - кто-то хочет, чтобы что-то изменилось, так что это «проблема»
- Разработчик открывает проблему и нажимает CREATE MERGE REQUEST
- Этот генерирует запрос на слияние (MR), соответствующую ветвь и связывает его с проблемой
- Разработчик работает над веткой, толкая изменения по мере их поступления
- Разработчик получает проходящий конвейер и нажимает « Resolve WIP » на этой странице запроса на слияние, когда он готов к тому, чтобы заказчик предварительно просмотрел работу и / или другой разработчик просмотрел код.
- Отсюда, чтобы этот рецензент либо щелкнул MERGE , когда завершит рецензирование, или даже лучше, включите ОДОБРЕНИЯ в настройках репозитория и установите людей или группы людей, которым вы хотите отзывы.
- Рядом с кнопкой слияния обязательно удалите исходную ветвь (для здравого смысла), и объединенный код автоматически 1045 * закроет проблему - и свяжет все 3 элемента вместе.
Это в корне отошло от того, как работает GitHub (откуда я пришел), когда у вас нет , чтобы рассказать людям, над чем вы работаете.
- Запросы на извлечение на GitHub создаются, когда работа закончена и вы хотите объединиться с мастером.
- Запросы на слияние на GitLab создаются, когда работа начинается , и вы хотите рассказать миру, что собираетесь приступить к работе над функцией , Это позволяет людям быстро отключиться, если это не нужно, или предотвращает дублирование усилий нескольких разработчиков.
РЕДАКТИРОВАТЬ: Похоже, вы заинтересованы в использовании API. Существует пакет python, называемый 'python-gitlab', который на самом деле работает прилично http://python -gitlab.readthedocs.io / en / stable / gl_objects / mrs.html
import gitlab
import os
origin = "https://gitlab.example.com"
# Private token is set as an env var
gl = gitlab.Gitlab(origin, private_token, api_version='4')
gl.auth()
def create_merge_request(origin, private_token):
mr = project.mergerequests.create({'source_branch': 'cool_feature',
'target_branch': 'master',
'title': 'merge cool feature',
'labels': ['label1', 'label2']})
mr.assignee_id = gl.users.get(2).id # Assign it to coworker
def lookup_last_pipeline(origin, private_token):
current_pipeline_id = os.environ['CI_PIPELINE_ID']
pipelines = gl.projects.get(os.environ['CI_PROJECT_ID']).pipelines.list()
for pipeline in pipelines:
if pipeline.status == 'success' and pipeline.id == current_pipeline_id:
create_merge_request()
Это, конечно, пример, вам придется адаптировать его к вашим точным потребностям.