doc-locale/fr-fr/api/job_artifacts.md
{{< details >}}
{{< /details >}}
Utilisez cette API pour télécharger, conserver et supprimer les artefacts de job.
Téléchargez l'archive des artefacts d'un job en utilisant un ID de job.
Si vous utilisez cURL pour télécharger des artefacts depuis GitLab.com, utilisez le paramètre --location car la requête peut être redirigée via un CDN.
GET /projects/:id/jobs/:job_id/artifacts
Attributs pris en charge :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier ou chaîne | Oui | ID ou chemin encodé en URL du projet. |
job_id | entier | Oui | ID d'un job. |
job_token | string | Non | Jeton de job CI/CD pour les pipelines multi-projets. Premium et Ultimate uniquement. |
En cas de succès, retourne 200 et sert le fichier d'artefacts.
Exemple de requête :
curl --request GET \
--location \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/jobs/42/artifacts" \
--output artifacts.zip
Exemple de requête utilisant un jeton de job CI/CD :
# Uses the job_token parameter
artifact_download:
stage: test
script:
- 'curl --request GET \
--location \
--url "https://gitlab.example.com/api/v4/projects/1/jobs/42/artifacts?job_token=$CI_JOB_TOKEN" \
--output artifacts.zip'
{{< history >}}
search_recent_successful_pipelines a été introduit dans GitLab 18.7 avec un flag nommé ci_search_recent_successful_pipelines. Désactivé par défaut.ci_search_recent_successful_pipelines a été supprimé dans GitLab 18.10{{< /history >}}
Téléchargez l'archive des artefacts d'un job depuis le dernier pipeline réussi en utilisant un nom de référence. Lorsque search_recent_successful_pipelines=true, la recherche inclut jusqu'à 100 pipelines réussis récents pour la référence spécifiée.
Le dernier pipeline réussi est déterminé en fonction de l'heure de création. L'heure de début ou de fin des jobs individuels n'a pas d'incidence sur le pipeline le plus récent.
Pour les pipelines parent et enfant, les artefacts sont recherchés dans un ordre hiérarchique du parent vers l'enfant. Si les pipelines parent et enfant ont tous les deux un job portant le même nom, l'artefact du pipeline parent est retourné.
Prérequis :
success.allow_failure: true défini.Si vous utilisez cURL pour télécharger des artefacts depuis GitLab.com, utilisez le paramètre --location car la requête peut être redirigée via un CDN.
GET /projects/:id/jobs/artifacts/:ref_name/download?job=name
Attributs pris en charge :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier ou chaîne | Oui | ID ou chemin encodé en URL du projet. |
job | string | Oui | Le nom du job. |
ref_name | string | Oui | Nom de branche ou de tag dans le dépôt. Les références HEAD ou SHA ne sont pas prises en charge. Pour les pipelines de merge request, utilisez refs/merge-requests/:iid/head à la place du nom de branche. |
job_token | string | Non | Jeton de job CI/CD pour les pipelines multi-projets. Premium et Ultimate uniquement. |
search_recent_successful_pipelines | boolean | Non | Recherche parmi les pipelines réussis récents plutôt que parmi uniquement le dernier. La valeur par défaut est false. |
En cas de succès, retourne 200 et sert le fichier d'artefacts.
Si le job ou les artefacts sont introuvables, retourne 404.
Exemple de requête :
curl --request GET \
--location \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/jobs/artifacts/main/download?job=test"
Exemple de requête utilisant un jeton de job CI/CD :
# Uses the job_token parameter
artifact_download:
stage: test
script:
- 'curl --request GET \
--location \
--url "https://gitlab.example.com/api/v4/projects/$CI_PROJECT_ID/jobs/artifacts/main/download?job=test&job_token=$CI_JOB_TOKEN" \
--output artifacts.zip'
Exemple de requête avec recherche dans les pipelines récents :
curl --request GET \
--location \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/jobs/artifacts/main/download?job=test&search_recent_successful_pipelines=true"
Téléchargez un seul fichier depuis les artefacts d'un job en utilisant un ID de job. Le fichier est extrait de l'archive et transmis en flux au client.
Si vous utilisez cURL pour télécharger des artefacts depuis GitLab.com, utilisez le paramètre --location car la requête peut être redirigée via un CDN.
GET /projects/:id/jobs/:job_id/artifacts/*artifact_path
Attributs pris en charge :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
artifact_path | string | Oui | Chemin vers un fichier à l'intérieur de l'archive d'artefacts. |
id | entier ou chaîne | Oui | ID ou chemin encodé en URL du projet. |
job_id | entier | Oui | L'identifiant unique du job. |
job_token | string | Non | Jeton de job CI/CD pour les pipelines multi-projets. Premium et Ultimate uniquement. |
En cas de succès, retourne 200 et envoie un seul fichier d'artefact.
Exemple de requête :
curl --request GET \
--location \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/jobs/5/artifacts/some/release/file.pdf"
{{< history >}}
{{< /history >}}
Listez tous les fichiers et répertoires dans l'archive d'artefacts d'un job spécifié. Cette opération lit les métadonnées de l'artefact sans extraire l'archive complète, ce qui la rend efficace pour parcourir de grandes archives.
GET /projects/:id/jobs/:job_id/artifacts/tree
Attributs pris en charge :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier ou chaîne | Oui | ID ou chemin encodé en URL du projet. |
job_id | entier | Oui | ID d'un job. |
path | string | Non | Chemin à parcourir dans l'archive d'artefacts. Par défaut, le répertoire racine. |
recursive | boolean | Non | Si true, retourne toutes les entrées de manière récursive. Par défaut : false. |
job_token | string | Non | Jeton de job CI/CD utilisé pour déclencher un pipeline multi-projets. Premium et Ultimate uniquement. |
Ce point de terminaison prend en charge la pagination.
En cas de succès, renvoie 200 et les attributs de réponse suivants :
| Attribut | Type | Description |
|---|---|---|
name | string | Nom du fichier ou du répertoire. |
path | string | Chemin complet dans l'archive d'artefacts. Les répertoires incluent une barre oblique finale. |
type | string | Type d'entrée. Valeurs possibles : file, directory. |
size | entier | Taille du fichier en octets. Présent uniquement pour les fichiers. |
mode | string | Mode de fichier Unix au format octal. Par exemple, 100644 pour les fichiers ou 040755 pour les répertoires. |
Si le job, les artefacts, les métadonnées d'artefact ou le chemin spécifié sont introuvables, retourne 404.
Exemple de requête :
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/jobs/42/artifacts/tree"
Exemple de réponse :
[
{
"name": "ci_build_artifacts.zip",
"path": "ci_build_artifacts.zip",
"type": "file",
"size": 1024,
"mode": "100644"
},
{
"name": "other_artifacts_0.1.2",
"path": "other_artifacts_0.1.2/",
"type": "directory",
"mode": "040755"
}
]
Exemple de requête pour parcourir un sous-répertoire :
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/jobs/42/artifacts/tree?path=coverage/reports"
Exemple de requête pour un listage récursif :
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/jobs/42/artifacts/tree?recursive=true"
Exemple de requête utilisant un jeton de job CI/CD :
# Uses the job_token parameter
list_artifacts:
stage: test
script:
- 'curl --request GET \
--url "https://gitlab.example.com/api/v4/projects/1/jobs/42/artifacts/tree?job_token=$CI_JOB_TOKEN"'
{{< history >}}
search_recent_successful_pipelines a été introduit dans GitLab 18.9 avec un flag nommé ci_search_recent_successful_pipelines. Désactivé par défaut.ci_search_recent_successful_pipelines a été supprimé dans GitLab 18.10{{< /history >}}
Téléchargez un seul fichier depuis les artefacts d'un job dans le dernier pipeline réussi en utilisant le nom de référence. Le fichier est extrait de l'archive et transmis en flux au client avec le type de contenu plain/text. Lorsque search_recent_successful_pipelines=true, la recherche inclut jusqu'à 100 pipelines réussis récents pour la référence spécifiée.
Pour les pipelines parent et enfant, les artefacts sont recherchés dans un ordre hiérarchique du parent vers l'enfant. Si les pipelines parent et enfant ont tous les deux un job portant le même nom, l'artefact du pipeline parent est retourné.
Le fichier d'artefact fournit plus de détails que ce qui est disponible dans l'export CSV.
Prérequis :
success.allow_failure: true défini.ci_search_recent_successful_pipelines doit être activé pour le projet.Si vous utilisez cURL pour télécharger des artefacts depuis GitLab.com, utilisez le paramètre --location car la requête peut être redirigée via un CDN.
GET /projects/:id/jobs/artifacts/:ref_name/raw/*artifact_path?job=name
Attributs pris en charge :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
artifact_path | string | Oui | Chemin vers un fichier à l'intérieur de l'archive d'artefacts. |
id | entier ou chaîne | Oui | ID ou chemin encodé en URL du projet. |
job | string | Oui | Le nom du job. |
ref_name | string | Oui | Nom de branche ou de tag dans le dépôt. Les références HEAD ou SHA ne sont pas prises en charge. Pour les pipelines de merge request, utilisez refs/merge-requests/:iid/head à la place du nom de branche. |
job_token | string | Non | Jeton de job CI/CD pour les pipelines multi-projets. Premium et Ultimate uniquement. |
search_recent_successful_pipelines | boolean | Non | Recherche parmi les pipelines réussis récents plutôt que parmi uniquement le dernier. La valeur par défaut est false. |
En cas de succès, retourne 200 et envoie un seul fichier d'artefact.
Si le job ou le fichier d'artefact sont introuvables, retourne 404.
Exemple de requête :
curl --request GET \
--location \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/jobs/artifacts/main/raw/some/release/file.pdf?job=pdf"
Exemple de requête avec recherche dans les pipelines récents :
curl --request GET \
--location \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/jobs/artifacts/main/raw/some/release/file.pdf?job=pdf&search_recent_successful_pipelines=true"
Empêchez la suppression automatique des artefacts d'un job lorsqu'ils atteignent leur date d'expiration.
POST /projects/:id/jobs/:job_id/artifacts/keep
Attributs pris en charge :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier ou chaîne | Oui | ID ou chemin encodé en URL du projet. |
job_id | entier | Oui | ID d'un job. |
En cas de succès, retourne 200 et les détails du job.
Exemple de requête :
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/jobs/1/artifacts/keep"
Exemple de réponse :
{
"commit": {
"author_email": "[email protected]",
"author_name": "Administrator",
"created_at": "2015-12-24T16:51:14.000+01:00",
"id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
"message": "Test the CI integration.",
"short_id": "0ff3ae19",
"title": "Test the CI integration."
},
"coverage": null,
"allow_failure": false,
"download_url": null,
"id": 42,
"name": "rubocop",
"ref": "main",
"artifacts": [],
"runner": null,
"stage": "test",
"created_at": "2016-01-11T10:13:33.506Z",
"started_at": "2016-01-11T10:13:33.506Z",
"finished_at": "2016-01-11T10:15:10.506Z",
"duration": 97.0,
"status": "failed",
"failure_reason": "script_failure",
"tag": false,
"web_url": "https://example.com/foo/bar/-/jobs/42",
"user": null
}
Supprimez tous les artefacts associés à un job spécifique. Les artefacts ne peuvent pas être récupérés après leur suppression.
Prérequis :
DELETE /projects/:id/jobs/:job_id/artifacts
Attributs pris en charge :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier ou chaîne | Oui | ID ou chemin encodé en URL du projet. |
job_id | entier | Oui | ID d'un job. |
En cas de succès, retourne 204 No Content.
Exemple de requête :
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/jobs/1/artifacts"
Supprimez tous les artefacts de job éligibles à la suppression dans un projet. Les artefacts ne peuvent pas être récupérés après leur suppression.
Par défaut, les artefacts du pipeline réussi le plus récent de chaque ref ne sont pas supprimés.
Les requêtes adressées à ce point de terminaison définissent l'expiration de tous les artefacts de job pouvant être supprimés à l'heure actuelle. Les fichiers sont ensuite supprimés du système dans le cadre du nettoyage régulier des artefacts de job expirés. Les job logs ne sont jamais supprimés.
Le nettoyage régulier s'effectue de manière asynchrone selon un calendrier, il peut donc y avoir un court délai avant la suppression des artefacts.
Prérequis :
DELETE /projects/:id/artifacts
Attributs pris en charge :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier ou chaîne | Oui | ID ou chemin encodé en URL du projet. |
En cas de succès, retourne 202 Accepted.
Exemple de requête :
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/artifacts"
Vous pouvez obtenir une erreur 404 Not Found lorsque vous tentez de télécharger des artefacts de job en utilisant un nom de branche comme ref_name.
Ce problème se produit car les pipelines de merge request utilisent un format de référence différent de celui des pipelines de branche. Les pipelines de merge request s'exécutent sur refs/merge-requests/:iid/head, pas directement sur la branche source.
Pour télécharger les artefacts de job d'un pipeline de merge request, utilisez refs/merge-requests/:iid/head comme ref_name à la place du nom de branche, où :iid est l'ID du merge request. Dans les pipelines de merge request, l'ID est disponible depuis la variable $CI_MERGE_REQUEST_IID et le ref_name complet depuis la variable $CI_MERGE_REQUEST_REF_PATH.
Par exemple, pour le merge request !123 :
curl --request GET \
--location \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/jobs/artifacts/refs/merge-requests/123/head/raw/file.txt?job=test"
artifacts:reports {#downloading-artifactsreports-files}Vous pouvez obtenir une erreur 404 Not Found lorsque vous tentez de télécharger des rapports via l'API des artefacts de job.
Ce problème se produit car les rapports ne sont pas téléchargeables par défaut.
Pour rendre les rapports téléchargeables, ajoutez leurs noms de fichiers ou gl-*-report.json à artifacts:paths.