Возникла ошибка при создании и объединении gitlab mr с использованием скрипта PythonPython

Программы на Python
Ответить
Anonymous
 Возникла ошибка при создании и объединении gitlab mr с использованием скрипта Python

Сообщение 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()


Подробнее здесь: https://stackoverflow.com/questions/792 ... hon-script
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»