Je prévois d'exécuter des validations sur la demande d'extraction dans un pipeline CI et, en fonction des résultats de la validation, je souhaite créer automatiquement un problème et l'attribuer aux développeurs.

Est-ce réalisable dans un pipeline GitLab?

Merci!

4
sqr 13 mars 2021 à 11:33

2 réponses

Meilleure réponse

Si vous avez juste besoin de créer un seul problème, utilisez la commande cURL. Cependant, si vous avez besoin d'une logique plus complexe, le python- La bibliothèque gitlab peut être un outil utile dans votre arsenal.

Pour créer un problème de projet:

import gitlab
import os

gl = gitlab.Gitlab(os.environ['CI_SERVER_URL'], private_token=os.environ['PRIVATE_TOKEN'])
project = gl.projects.get(os.environ['CI_PROJECT_ID'])

issue_details = {
'title': f'Validation failed in {os.environ["CI_PROJECT_NAME"]}',
'description': f'Pipeline: {os.environ["CI_PIPELINE_URL"]}',
'assignee_ids': [111, 222]
}
issue = project.issues.create(issue_details )

Cela suppose que vous ayez créé une variable masquée appelée PRIVATE_TOKEN. Les autres variables sont des variables prédéfinies.

Vous pouvez ajouter le code ci-dessus et une autre logique à un script Python et l'appeler en gitlab-ci.yml comme ceci:

# Use whatever image you need, but make sure it has Python installed
image: python:3.7
...
handle-failure:
  when: on_failure
  before_script:
    - pip install -r ./cicd/gitlab/requirements.txt
  script:
    - python -m ./cicd/gitlab/create_issue.py
1
DV82XL 14 mars 2021 à 07:06

Vous devriez pouvoir appeler l 'API New Issue via un appel curl (comme vu ici)

curl --request POST --header "PRIVATE-TOKEN: PlainTextToken" "https://gitlab.com/api/v4/projects/:id/issues?title=a title"

Vous devrez ajouter un jeton privé en tant que variable masquée .

3
VonC 13 mars 2021 à 14:34