J'utilise gitlab sur leurs serveurs. Je souhaite télécharger mes derniers artefacts construits (construits via gitlab-ci) via l'API comme ceci
curl --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.com/api/v3/projects/1/builds/8/artifacts"
Où puis-je trouver cet identifiant de projet? Ou bien cette manière d'utiliser l'API n'est-elle pas destinée aux projets gitlab hébergés?
BW Hubert
Vous pouvez interroger pour vos projets possédés:
curl -XGET --header "PRIVATE-TOKEN: XXXX" "https://gitlab.com/api/v3/projects/owned"
Vous recevrez JSON avec chaque projet en propriété:
[
{
"id":48,
"description":"",
"default_branch":"master",
"tag_list":[
...
Vous pouvez également obtenir l'ID de projet à partir de la configuration des déclencheurs de votre projet, qui contient déjà un exemple de code avec votre ID.
À partir de la page Déclencheurs:
curl -X POST \
-F token=TOKEN \
-F ref=REF_NAME \
https://<GitLab Installation>/api/v3/projects/<ProjectID>/trigger/builds
Je viens de découvrir un moyen encore plus simple d’obtenir l’identifiant du projet: il suffit de consulter le contenu HTML de la page gitlab hébergeant votre projet. Il y a une entrée avec un champ appelé project_id, par exemple:
<input type="hidden" name="project_id" id="project_id" value="335" />
Sur la page Modifier un projet, un champ ID de projet est situé dans le coin supérieur droit.
(Vous pouvez également voir l'ID sur la page Pipelines CI/CD, dans le code exameple de la section Triggers.)
Dans les anciennes versions, vous pouvez le voir sur la page Triggers, dans les URL du code exemple.
Entrez le projet.
Dans le menu de gauche, cliquez sur Paramètres -> Général -> Développez Paramètres généraux.
Il porte une étiquette ID de projet et se trouve à côté du nom du projet.
Ceci est sur la version GitLab 10.2
Comme mentionné ici , toutes les API à la portée du projet attendent un ID ou le chemin du projet (URL codée). Donc, utilisez simplement https://gitlab.com/api/v4/projects/gitlab-org%2Fgitlab-ce directement lorsque vous souhaitez interagir avec un projet.
Fournir la solution qui résout réellement le problème l'api d'obtenir l'identifiant de projet pour un projet spécifique de gitlab
curl -XGET -H "Content-Type: application/json" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" http://<YOUR-GITLAB-SERVER>/api/v3/projects/<YOUR-NAMESPACE>%2F<YOUR-PROJECT-NAME> | python -mjson.tool
Ou peut-être voulez-vous simplement l'identifiant du projet:
curl -XGET -H "Content-Type: application/json" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" http://<YOUR-GITLAB-SERVER>/api/v3/projects/<YOUR-NAMESPACE>%2F<YOUR-PROJECT-NAME> | python -c 'import sys, json; print(json.load(sys.stdin)["id"])'
Notez que l’URL du référentiel (nom du référentiel) est codé.
Vous pouvez interroger des projets avec l'attribut de recherche, par exemple:
http://gitlab.com/api/v3/projects?private_token=xxx&search=myprojectname
Pour mémoire, si quelqu'un d'autre a besoin de télécharger des artefacts de gitlab.com créés via gitlab-ci
curl -XGET --header "PRIVATE-TOKEN: YOUR_AD_HERE?" "https://gitlab.com/api/v3/projects/owned"
curl -XGET --header "PRIVATE-TOKEN: YOUR_AD_HERE?" -o myapp.jar "https://gitlab.com/api/v3/projects/4711/builds/artifacts/master/download?job=release"
Je suis très impressionné par la beauté de gitlab.
Si vous connaissez le nom de votre projet, vous pouvez obtenir l'identifiant du projet à l'aide de l'API suivante:
curl --header "Private-Token: <your_token>" -X GET https://gitlab.com/api/v4/projects?search=<exact_project_name>
Cela renverra un JSON incluant l'id:
[
{
"id":<project id>, ...
}
]
À partir de l'API Gitlab v4, l'API suivante renvoie tous les projets que vous possédez:
curl --header 'PRIVATE-TOKEN: <your_token>' 'https://gitlab.com/api/v4/projects?owned=true'
La réponse contient le projet id
. Les jetons d'accès Gitlab peuvent être créés à partir de cette page - https://gitlab.com/profile/personal_access_tokens
Si votre nom de projet est unique, il est pratique de suivre la réponse par shunya, recherchez par nom, reportez-vous à API doc .
Si vous avez un jeton d'accès plus fort et que Gitlab contient quelques projets portant le même nom dans différents groupes, la recherche dans le groupe est plus pratique. API doc ici . par exemple.
curl --header "PRIVATE-TOKEN: <token>" -X GET https://gitlab.com/api/v4/groups/<group_id>/search?scope=projects&search=<project_name>
L'identifiant du groupe se trouve sur la page Paramètres du domaine du groupe.
Et pour extraire l'identifiant du projet de la sortie, vous pouvez faire:
curl --header "PRIVATE-TOKEN: <token>" -X GET https://gitlab.com/api/v4/groups/<group_id>/search?scope=projects&search=<project_name> | jq '[0].id'
Pour obtenir l'identifiant de tous les projets, utilisez:
curl --header 'PRIVATE-TOKEN: XXXXXXXXXXXXXXXXXXXXXXX' 'https://gitlab.com/api/v4/projects?owned=true' > curloutput
grep -oPz 'name\":\".*?\"|{\"id\":[0-9]+' curloutput | sed 's/{\"/\n/g' | sed 's/name//g' |sed 's/id\"://g' |sed 's/\"//g' | sort -u -n