Back to Gitlabhq

API des règles push de projet

doc-locale/fr-fr/api/project_push_rules.md

19.1.015.7 KB
Original Source

{{< details >}}

  • Édition : Premium, Ultimate
  • Offre : GitLab.com, GitLab Self-Managed, GitLab Dedicated

{{< /details >}}

Utilisez cette API pour gérer les règles push du projet.

[!note] GitLab utilise la syntaxe RE2 pour toutes les expressions régulières dans les règles push.

Récupérer les règles push d'un projet {#retrieve-the-push-rules-of-a-project}

Récupère les règles push d'un projet spécifié.

plaintext
GET /projects/:id/push_rule

Attributs pris en charge :

AttributTypeObligatoireDescription
identier ou chaîneOuiL'ID ou le chemin encodé en URL du projet.

En cas de succès, renvoie 200 OK et les attributs de réponse suivants :

AttributTypeDescription
author_email_regexstringTous les e-mails des auteurs de commit doivent correspondre à cette expression régulière.
branch_name_regexstringTous les noms de branche doivent correspondre à cette expression régulière.
commit_committer_checkbooleanSi true, les utilisateurs ne peuvent pousser des commits vers ce dépôt que si l'e-mail du committer est l'un de leurs e-mails vérifiés.
commit_committer_name_checkbooleanSi true, les utilisateurs ne peuvent pousser des commits vers ce dépôt que si le nom de l'auteur du commit est cohérent avec leur nom de compte GitLab.
commit_message_negative_regexstringAucun message de commit ne peut correspondre à cette expression régulière.
commit_message_regexstringTous les messages de commit doivent correspondre à cette expression régulière.
created_atstringDate et heure de création de la règle push.
deny_delete_tagbooleanSi true, interdit la suppression d'un tag.
file_name_regexstringTous les noms de fichiers committés ne doivent pas correspondre à cette expression régulière.
identierID de la règle push.
max_file_sizeentierTaille maximale du fichier (Mo).
member_checkbooleanSi true, restreint les commits par auteur (e-mail) aux utilisateurs GitLab existants.
prevent_secretsbooleanSi true, GitLab rejette tout fichier susceptible de contenir des secrets.
project_identierID du projet.
reject_non_dco_commitsbooleanSi true, rejette les commits non certifiés DCO.
reject_unsigned_commitsbooleanSi true, rejette les commits non signés.

Si aucune règle push n'a jamais été configurée pour le projet, retourne HTTP 200 OK avec la chaîne littérale "null" comme corps de réponse.

[!note] Ceci diffère de l'API des règles push de groupe, qui retourne une erreur 404 Not Found.

Exemple de requête :

shell
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/3/push_rule"

Exemple de réponse lorsque les règles push sont configurées avec tous les paramètres désactivés :

json
{
  "id": 1,
  "project_id": 3,
  "created_at": "2012-10-12T17:04:47Z",
  "commit_message_regex": "Fixes \\d+\\..*",
  "commit_message_negative_regex": "ssh\\:\\/\\/",
  "branch_name_regex": "",
  "deny_delete_tag": false,
  "member_check": false,
  "prevent_secrets": false,
  "author_email_regex": "",
  "file_name_regex": "",
  "max_file_size": 0,
  "commit_committer_check": null,
  "commit_committer_name_check": false,
  "reject_unsigned_commits": null,
  "reject_non_dco_commits": null
}

Si les attributs suivants sont désactivés, ils retournent null au lieu de false :

  • commit_committer_check
  • reject_unsigned_commits
  • reject_non_dco_commits

Exemple de réponse lorsque les règles push n'ont jamais été configurées pour le projet :

plaintext
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 4

null

Ceci retourne la chaîne littérale "null" (4 caractères), et non une valeur JSON null.

Ajouter des règles push à un projet {#add-push-rules-to-a-project}

Ajoute des règles push au projet spécifié.

plaintext
POST /projects/:id/push_rule

Attributs pris en charge :

AttributTypeObligatoireDescription
identier ou chaîneOuiL'ID ou le chemin encodé en URL du projet.
author_email_regexstringNonTous les e-mails des auteurs de commit doivent correspondre à cette expression régulière.
branch_name_regexstringNonTous les noms de branche doivent correspondre à cette expression régulière.
commit_committer_checkbooleanNonSi true, les utilisateurs ne peuvent pousser des commits vers ce dépôt que si l'e-mail du committer est l'un de leurs e-mails vérifiés.
commit_committer_name_checkbooleanNonSi true, les utilisateurs ne peuvent pousser des commits vers ce dépôt que si le nom de l'auteur du commit est cohérent avec leur nom de compte GitLab.
commit_message_negative_regexstringNonAucun message de commit ne peut correspondre à cette expression régulière.
commit_message_regexstringNonTous les messages de commit doivent correspondre à cette expression régulière.
deny_delete_tagbooleanNonSi true, interdit la suppression d'un tag.
file_name_regexstringNonTous les noms de fichiers committés ne doivent pas correspondre à cette expression régulière.
max_file_sizeentierNonTaille maximale du fichier (Mo).
member_checkbooleanNonSi true, restreint les commits par auteur (e-mail) aux utilisateurs GitLab existants.
prevent_secretsbooleanNonSi true, GitLab rejette tout fichier susceptible de contenir des secrets.
reject_non_dco_commitsbooleanNonSi true, rejette les commits non certifiés DCO.
reject_unsigned_commitsbooleanNonSi true, rejette les commits non signés.

En cas de succès, renvoie 201 Created et les attributs de réponse suivants :

AttributTypeDescription
author_email_regexstringTous les e-mails des auteurs de commit doivent correspondre à cette expression régulière.
branch_name_regexstringTous les noms de branche doivent correspondre à cette expression régulière.
commit_committer_checkbooleanSi true, les utilisateurs ne peuvent pousser des commits vers ce dépôt que si l'e-mail du committer est l'un de leurs e-mails vérifiés.
commit_committer_name_checkbooleanSi true, les utilisateurs ne peuvent pousser des commits vers ce dépôt que si le nom de l'auteur du commit est cohérent avec leur nom de compte GitLab.
commit_message_negative_regexstringAucun message de commit ne peut correspondre à cette expression régulière.
commit_message_regexstringTous les messages de commit doivent correspondre à cette expression régulière.
created_atstringDate et heure de création de la règle push.
deny_delete_tagbooleanSi true, interdit la suppression d'un tag.
file_name_regexstringTous les noms de fichiers committés ne doivent pas correspondre à cette expression régulière.
identierID de la règle push.
max_file_sizeentierTaille maximale du fichier (Mo).
member_checkbooleanSi true, restreint les commits par auteur (e-mail) aux utilisateurs GitLab existants.
prevent_secretsbooleanSi true, GitLab rejette tout fichier susceptible de contenir des secrets.
project_identierID du projet.
reject_non_dco_commitsbooleanSi true, rejette les commits non certifiés DCO.
reject_unsigned_commitsbooleanSi true, rejette les commits non signés.

Exemple de requête :

shell
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/3/push_rule" \
  --data "commit_message_regex=Fixes \\d+\\..*" \
  --data "deny_delete_tag=false"

Exemple de réponse :

json
{
  "id": 1,
  "project_id": 3,
  "created_at": "2012-10-12T17:04:47Z",
  "commit_message_regex": "Fixes \\d+\\..*",
  "commit_message_negative_regex": "",
  "branch_name_regex": "",
  "deny_delete_tag": false,
  "member_check": false,
  "prevent_secrets": false,
  "author_email_regex": "",
  "file_name_regex": "",
  "max_file_size": 0,
  "commit_committer_check": false,
  "commit_committer_name_check": false,
  "reject_unsigned_commits": false,
  "reject_non_dco_commits": false
}

Mettre à jour les règles push d'un projet {#update-push-rules-of-a-project}

Met à jour les règles push pour le projet spécifié.

plaintext
PUT /projects/:id/push_rule

Attributs pris en charge :

AttributTypeObligatoireDescription
identier ou chaîneOuiL'ID ou le chemin encodé en URL du projet.
author_email_regexstringNonTous les e-mails des auteurs de commit doivent correspondre à cette expression régulière.
branch_name_regexstringNonTous les noms de branche doivent correspondre à cette expression régulière.
commit_committer_checkbooleanNonSi true, les utilisateurs ne peuvent pousser des commits vers ce dépôt que si l'e-mail du committer est l'un de leurs e-mails vérifiés.
commit_committer_name_checkbooleanNonSi true, les utilisateurs ne peuvent pousser des commits vers ce dépôt que si le nom de l'auteur du commit est cohérent avec leur nom de compte GitLab.
commit_message_negative_regexstringNonAucun message de commit ne peut correspondre à cette expression régulière.
commit_message_regexstringNonTous les messages de commit doivent correspondre à cette expression régulière.
deny_delete_tagbooleanNonSi true, interdit la suppression d'un tag.
file_name_regexstringNonTous les noms de fichiers committés ne doivent pas correspondre à cette expression régulière.
max_file_sizeentierNonTaille maximale du fichier (Mo).
member_checkbooleanNonSi true, restreint les commits par auteur (e-mail) aux utilisateurs GitLab existants.
prevent_secretsbooleanNonSi true, GitLab rejette tout fichier susceptible de contenir des secrets.
reject_non_dco_commitsbooleanNonSi true, rejette les commits non certifiés DCO.
reject_unsigned_commitsbooleanNonSi true, rejette les commits non signés.

En cas de succès, renvoie 200 OK et les attributs de réponse suivants :

AttributTypeDescription
author_email_regexstringTous les e-mails des auteurs de commit doivent correspondre à cette expression régulière.
branch_name_regexstringTous les noms de branche doivent correspondre à cette expression régulière.
commit_committer_checkbooleanSi true, les utilisateurs ne peuvent pousser des commits vers ce dépôt que si l'e-mail du committer est l'un de leurs e-mails vérifiés.
commit_committer_name_checkbooleanSi true, les utilisateurs ne peuvent pousser des commits vers ce dépôt que si le nom de l'auteur du commit est cohérent avec leur nom de compte GitLab.
commit_message_negative_regexstringAucun message de commit ne peut correspondre à cette expression régulière.
commit_message_regexstringTous les messages de commit doivent correspondre à cette expression régulière.
created_atstringDate et heure de création de la règle push.
deny_delete_tagbooleanSi true, interdit la suppression d'un tag.
file_name_regexstringTous les noms de fichiers committés ne doivent pas correspondre à cette expression régulière.
identierID de la règle push.
max_file_sizeentierTaille maximale du fichier (Mo).
member_checkbooleanSi true, restreint les commits par auteur (e-mail) aux utilisateurs GitLab existants.
prevent_secretsbooleanSi true, GitLab rejette tout fichier susceptible de contenir des secrets.
project_identierID du projet.
reject_non_dco_commitsbooleanSi true, rejette les commits non certifiés DCO.
reject_unsigned_commitsbooleanSi true, rejette les commits non signés.

Exemple de requête :

shell
curl --request PUT \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/3/push_rule" \
  --data "commit_message_regex=Fixes \\d+\\..*" \
  --data "deny_delete_tag=true"

Exemple de réponse :

json
{
  "id": 1,
  "project_id": 3,
  "created_at": "2012-10-12T17:04:47Z",
  "commit_message_regex": "Fixes \\d+\\..*",
  "commit_message_negative_regex": "",
  "branch_name_regex": "",
  "deny_delete_tag": true,
  "member_check": false,
  "prevent_secrets": false,
  "author_email_regex": "",
  "file_name_regex": "",
  "max_file_size": 0,
  "commit_committer_check": false,
  "commit_committer_name_check": false,
  "reject_unsigned_commits": false,
  "reject_non_dco_commits": false
}

Supprimer les règles push d'un projet {#delete-the-push-rules-of-a-project}

Supprime toutes les règles push d'un projet spécifié.

plaintext
DELETE /projects/:id/push_rule

Attributs pris en charge :

AttributTypeObligatoireDescription
identier ou chaîneOuiL'ID ou le chemin encodé en URL du projet.

En cas de succès, retourne 204 No Content.

Exemple de requête :

shell
curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/3/push_rule"