Script en Python utilisant l'API de Gitlab permettant de créer, modifier et supprimer des issues en ligne de commande.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

5.7 KiB

Tutoriel de l'API de GitLab

L'API de Gitlab est une API REST. Elle fournit des fichiers JSON accessibles par liens, ainsi que la possiblité de réaliser des actions en donnet des paramètres GET, POST... : après le lien, vous pouvez rajouter ?argument=value. Dans votre navigateur, il n'y en a pas besoin, mais avec Curl, les requêtes doivent être suivies par ?access_token=<token> ou précédées par --header "PRIVATE-TOKEN: <token>".

Accéder aux fichiers JSON

Les requêtes suivantes sont uniquement des requêtes GET, il est donc possible de soit les ouvrir dans un navigateur soit avec Curl.

Pages des projets
https://gitlab.aosc-portal.com/api/v4/projects/support%2Fdgfip

Chaque / entre le nom du mainteneur et le nom du projet doivent être remplacés par %2F. Remarquez également que /projects/ a été rajouté comparé au lien d'origine.

Boards
https://gitlab.aosc-portal.com/api/v4/projects/9/boards/2

Le nom du projet est remplacé par son ID, ici 9. 2 correspond à l'ID du board que nous voulons regarder. Les boards sont seulement des filtres de tickets, proposant un rendu plus visuel et qui permet de trouver les informations facilement. Accéder à un board via l'API ne permet que de voir la liste des filtres par label.

Tickets
https://gitlab.aosc-portal.com/api/v4/projects/9/issues

Il existe beaucoup d'arguments GET pour filter les tickets. Il sont listés ici. Par exemple, pour filtrer les tickets par label, utilisez le l'argument labels=value (vous pouvrez ajouter plusieurs labels en les séparant par des virgules).

Actions

Les requêtes suivantes utilisent d'autre paramètres que GET. Le plus avisé est donc d'utiliser Curl.

Créer un ticket
curl --request POST --header "PRIVATE-TOKEN: <token>" "https://gitlab.aosc-portal.com/api/v4/projects/13/issues?&title=A%20Title&labels=To%20Do&description=test"

Vous pouvez constater ici qu'il y a trois arguments : title, labels et description. Seul le titre est obligatoire. Il existe de nombreuses possibilités. Remarquez que les espaces doivent être remplacés par %20, sinon vous optiendrez une erreur 400.

Supprimer un ticket
curl --request DELETE --header "PRIVATE-TOKEN: <token>" "https://gitlab.aosc-portal.com/api/v4/projects/13/issues/2"

2 est l'IID (internal ID) du ticket que nous voulons supprimer. Vous pouvez l'obtenir dans la liste des tickets (ils sont triés par ordre de création).

Éditer un ticket
curl --request PUT --header "PRIVATE-TOKEN: <token>" "https://gitlab.aosc-portal.com/api/v4/projects/13/issues/6?title=Title%20Changed&add_labels=AAA,BBB,changed"

Il existe beaucoup d'arguments pour éditer des tickets, comme :

  • add_label, remove_labels et labels pour ajouter, supprimer ou réécrire entièrement la liste des labels;
  • title, description pour ajouter un titre ou une description;
  • state_event=closed ou reopen pour fermer ou réouvrir un ticket.

English version

GitLab API tutorial

Gitlab API is a REST API. It provides JSON files reachable by links, and the possibility to perform actions by giving GET, POST, ... parameters : after the link, you can add an ?argument=value. In navigator, there is no need to use the token, but with Curl, each requests have to be followed by ?access_token=<token> or preceeded by --header "PRIVATE-TOKEN: <token>".

Access to JSON files

For each element below, it will be only GET requests, so it's possible to open theses links with a navigator or using Curl.

Projects pages
https://gitlab.aosc-portal.com/api/v4/projects/support%2Fdgfip

Each / between the maintener name and the project sould be replaced by %2F. Note that /projects/ is added in comparaison to the original link.

Boards
https://gitlab.aosc-portal.com/api/v4/projects/9/boards/2

The name of the project is replaced by his ID, here 9. 2 is the ID of the board that we want. Boards are just issues filters in order to render a more graphical table so they doesn't contain list of issues. Access to a board allows just to see his list of label filters.

Issues
https://gitlab.aosc-portal.com/api/v4/projects/9/issues

There are a lot of GET arguments used for filter issues. They are listed here. For filter issues by label, use the argument labels=value. Several arguments have to be separed by commas.

Operations

For elements below, there may be others requests than GET. Please consider use Curl for theses actions.

Create an issue
curl --request POST --header "PRIVATE-TOKEN: <token>" "https://gitlab.aosc-portal.com/api/v4/projects/13/issues?&title=A%20Title&labels=To%20Do&description=test"

Here, you can see that there are three arguments : title, labels and description. Only the title is needed and there are a lot of other possibilities. Note that each spaces sould be replaced by %20, otherwise you will get an error 400.

Delete an issue
curl --request DELETE --header "PRIVATE-TOKEN: <token>" "https://gitlab.aosc-portal.com/api/v4/projects/13/issues/2"

2 is the IID (internal ID) of issue we want to delete. You can get it in the issues list. Basically issues are sorted by order of creation.

Edit an issue
curl --request PUT --header "PRIVATE-TOKEN: <token>" "https://gitlab.aosc-portal.com/api/v4/projects/13/issues/6?title=Title%20Changed&add_labels=AAA,BBB,changed"

There are a lot of arguments available for editing issues, like:

  • add_label, remove_labels and labels for add, delete or rewrite entirely the label list;
  • title, description for edit title and description;
  • state_event=closed or reopen for close or reopen an issue.