Я пытаюсь создать и объединить mr gitlab с помощью скрипта Python, mr был создан без каких-либо ошибок, но при попытке объединить его я получил сообщение об ошибке «422, {» message":"Ветку невозможно объединить"}", как я могу получить более подробную информацию об ошибке? Есть ли проблемы с моим сценарием? Спасибо.
Функции, использованные для его создания и объединения:
def create_merge_request(token, project_id, source_branch, target_branch, title, description):
"""Créer une Merge Request sur GitLab."""
url = f"{GITLAB_HOST_HTTPS}/api/v4/projects/{project_id}/merge_requests"
headers = {"PRIVATE-TOKEN": token}
data = {
"source_branch": source_branch,
"target_branch": target_branch,
"title": title,
"description": description,
"merge_when_pipeline_succeeds": False, # Désactiver la fusion conditionnelle
"remove_source_branch": True, # Supprimer la branche source après fusion
"squash": True # Ne pas écraser les commits
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 201:
mr_data = response.json()
print(f"Merge Request créée avec succès : {mr_data.get('web_url')}")
return mr_data # Retourne les détails de la MR
else:
print(f"Erreur lors de la création de la Merge Request : {response.json()}")
return None
def merge_mr(token, project_id, merge_request_iid):
"""Fusionner une Merge Request via l'API GitLab."""
url = f"{GITLAB_HOST_HTTPS}/api/v4/projects/{project_id}/merge_requests/{merge_request_iid}/merge"
headers = {"PRIVATE-TOKEN": token}
print(f"URL utilisée pour le merge : {url}")
response = requests.put(url, headers=headers) #, json=data
if response.status_code == 200:
print("Merge Request mergée avec succès.")
return response.json()
elif response.status_code == 405:
print("Erreur 405 : Méthode non autorisée. Vérifiez la méthode HTTP (PUT).")
else:
print(f"Erreur lors de la Merge : {response.status_code}, {response.text}")
return None
def create_and_merge_mr(token, project_id, source_branch, target_branch, title, description):
"""Créer une MR et la merger immédiatement si possible."""
# Étape 1 : Créer la MR
mr_data = create_merge_request(token, project_id, source_branch, target_branch, title, description)
if not mr_data:
print("Échec de la création de la Merge Request.")
return
# Étape 2 : Récupérer l'ID interne de la MR (iid)
merge_request_iid = mr_data.get('iid')
if not merge_request_iid:
print("Impossible de récupérer l'ID interne de la Merge Request.")
return
# Étape 3 : Fusionner la MR
merge_result = merge_mr(token, project_id, merge_request_iid)
if merge_result:
print("MR mergée avec succès.")
else:
print("Échec de la merge de la MR.")
def main():
parser = ArgumentParser()
parser.add_argument("--client_group_name", help="Nom du groupe client à filtrer", default=None)
parser.add_argument("--yaml_file", help="Chemin du fichier YAML pour les topics", default="nature-topics.yaml")
parser.add_argument("--gitlab_token", help="GitLab token for authentication", required=True)
parser.add_argument("--nature", help="Nature of the environment (e.g., dev, qa)", required=True)
args = parser.parse_args()
#1.
#2.
#3.
#4.
# 9. merge la MR
# git_merge_branches(local_repo_path, new_branch, branch)
create_and_merge_mr(
args.gitlab_token,
project_id,
new_branch,
branch,
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
)
if __name__ == "__main__":
main()
Подробнее здесь: https://stackoverflow.com/questions/792 ... hon-script
Возникла ошибка при создании и объединении gitlab mr с использованием скрипта Python ⇐ Python
Программы на Python
1732312621
Anonymous
Я пытаюсь создать и объединить mr gitlab с помощью скрипта Python, mr был создан без каких-либо ошибок, но при попытке объединить его я получил сообщение об ошибке «422, {» message":"Ветку невозможно объединить"}", как я могу получить более подробную информацию об ошибке? Есть ли проблемы с моим сценарием? Спасибо.
Функции, использованные для его создания и объединения:
def create_merge_request(token, project_id, source_branch, target_branch, title, description):
"""Créer une Merge Request sur GitLab."""
url = f"{GITLAB_HOST_HTTPS}/api/v4/projects/{project_id}/merge_requests"
headers = {"PRIVATE-TOKEN": token}
data = {
"source_branch": source_branch,
"target_branch": target_branch,
"title": title,
"description": description,
"merge_when_pipeline_succeeds": False, # Désactiver la fusion conditionnelle
"remove_source_branch": True, # Supprimer la branche source après fusion
"squash": True # Ne pas écraser les commits
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 201:
mr_data = response.json()
print(f"Merge Request créée avec succès : {mr_data.get('web_url')}")
return mr_data # Retourne les détails de la MR
else:
print(f"Erreur lors de la création de la Merge Request : {response.json()}")
return None
def merge_mr(token, project_id, merge_request_iid):
"""Fusionner une Merge Request via l'API GitLab."""
url = f"{GITLAB_HOST_HTTPS}/api/v4/projects/{project_id}/merge_requests/{merge_request_iid}/merge"
headers = {"PRIVATE-TOKEN": token}
print(f"URL utilisée pour le merge : {url}")
response = requests.put(url, headers=headers) #, json=data
if response.status_code == 200:
print("Merge Request mergée avec succès.")
return response.json()
elif response.status_code == 405:
print("Erreur 405 : Méthode non autorisée. Vérifiez la méthode HTTP (PUT).")
else:
print(f"Erreur lors de la Merge : {response.status_code}, {response.text}")
return None
def create_and_merge_mr(token, project_id, source_branch, target_branch, title, description):
"""Créer une MR et la merger immédiatement si possible."""
# Étape 1 : Créer la MR
mr_data = create_merge_request(token, project_id, source_branch, target_branch, title, description)
if not mr_data:
print("Échec de la création de la Merge Request.")
return
# Étape 2 : Récupérer l'ID interne de la MR (iid)
merge_request_iid = mr_data.get('iid')
if not merge_request_iid:
print("Impossible de récupérer l'ID interne de la Merge Request.")
return
# Étape 3 : Fusionner la MR
merge_result = merge_mr(token, project_id, merge_request_iid)
if merge_result:
print("MR mergée avec succès.")
else:
print("Échec de la merge de la MR.")
def main():
parser = ArgumentParser()
parser.add_argument("--client_group_name", help="Nom du groupe client à filtrer", default=None)
parser.add_argument("--yaml_file", help="Chemin du fichier YAML pour les topics", default="nature-topics.yaml")
parser.add_argument("--gitlab_token", help="GitLab token for authentication", required=True)
parser.add_argument("--nature", help="Nature of the environment (e.g., dev, qa)", required=True)
args = parser.parse_args()
#1.
#2.
#3.
#4.
# 9. merge la MR
# git_merge_branches(local_repo_path, new_branch, branch)
create_and_merge_mr(
args.gitlab_token,
project_id,
new_branch,
branch,
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
)
if __name__ == "__main__":
main()
Подробнее здесь: [url]https://stackoverflow.com/questions/79211633/facing-an-error-while-creating-and-merge-a-gitlab-mr-using-python-script[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия