Si vous souhaitez accéder à un fichier à partir d'un GitLab privé, vous pouvez utiliser l'approche ci-dessous qui a fonctionné pour moi :)
Construire l'URL :
https://url/api/v4/projects/projectId/repository/files/fileName/raw?ref=master&private_token=Generated_private_token
- url est votre URL Gitlab, par exemple :git.lab.com.
- /api/v4/projects est une constante.
- ID de projet est le projectId de votre projet, que vous pouvez trouver sous le nom de votre projet dans gitlab.
- /dépôt/fichiers est à nouveau une constante.
- NomFichier est le nom du fichier ex :sagar.txt
- /raw?ref= est une constante et la valeur de ref peut être master ou n'importe quelle branche à partir de laquelle vous souhaitez prendre le fichier. Je récupère le fichier de Master.
- Generated_private_token doit être généré à partir de gitlab, veuillez suivre les étapes mentionnées dans le lien :Générer un jeton privé
Mise à jour 2018-12-25 :
tant que vous ne téléchargez pas de fichiers volumineux, cela devrait fonctionner :
curl -s -H "Private-Token: <token>" "https://gitlab.com/api/v4/projects/<urlencode("gitlab_username/project_name")>/repository/files/<path/to/file>/raw?ref=<branch_name>"
, un exemple réel, en téléchargeant le fichier /README.md
depuis le dépôt privé https://gitlab.com/divinity76/Yur17
, où l'URL de téléchargement Web est https://gitlab.com/divinity76/Yur17/raw/master/README.md?inline=false
, est :
curl -s -H "Private-Token: afF2s1xgk6xcwXHy3J4C" "https://gitlab.com/api/v4/projects/divinity76%2Fyur17/repository/files/README%2Emd/raw?ref=master"
notez en particulier comment le gitlab_username/repo_name
était encodé en URL, par exemple /
est devenu %2F
(vous pouvez vérifier comment votre nom d'utilisateur et votre nom de dépôt sont encodés en URL en ouvrant le terminal javascript de votre navigateur et en écrivant encodeURIComponent("your_username/repo_name");
dans le terminal et appuyez sur Entrée.)
merci à Jonathan Hall
@ gitlab sur mg.gitlab.com, et https://docs.gitlab.com/ee/api/repository_files.html , et tvl pour avoir aidé à trouver une solution.
Mise à jour 2018-12-11 :cette méthode ne fonctionne plus, maintenant elle ne sert que la page de connexion, avec un message indiquant need to log in to continue
, même en utilisant HTTP 200 OK (honte à eux), mettra à jour si je découvre pourquoi ( @XavierStuvw prétend que c'est lié à des problèmes de sécurité)
j'ai trouvé un moyen beaucoup plus simple de le faire que la réponse de @tvl,
créez d'abord un jeton d'accès avec un accès API ici :https://gitlab.com/profile/personal_access_tokens , puis faites :
wget --header 'PRIVATE-TOKEN: <token>' 'https://gitlab.com/<username>/<repo>/raw/master/path/to/file.ext'
j'ai trouvé la solution ici.
Avec l'aide précieuse de Chris, voici comment exécuter un script (fichier drupal .make dans mon cas) depuis un serveur GitLab. (Cela fonctionne probablement pour GitHub mais je ne l'ai pas testé. Peut-être que la syntaxe sera un peu différente). (Bien sûr, cela fonctionne pour tout type de script)
Cela peut être fait en utilisant les jetons d'authentification. Voici la documentation de l'API du GitLab et voici l'API du GitHub
Pour plus de commodité, j'utiliserai https://gitlab.com comme exemple de serveur.
-
Allez sur https://gitlab.com/profile/account et trouvez votre "Private token"
-
Imprimez ensuite la liste des projets et trouvez l'identifiant de votre projet que vous recherchez
curl https://gitlab.com/api/v3/projects?private_token=<your_private_token>
ou allez-y avec votre navigateur (un visualiseur json vous aidera beaucoup)
-
Imprimez ensuite la liste des fichiers qui se trouvent sur ce projet et trouvez l'id de votre fichier que vous recherchez
curl https://gitlab.com/api/v3/projects/<project_id>/repository/tree?private_token=<your_private_token>
-
Enfin récupérez/exécutez le fichier !
curl https://gitlab.com/api/v3/projects/<project_id>/repository/raw_blobs/<file_id>?private_token=<your_private_token>
Au cas où vous voudriez exécuter le script (drupal .make)
drush make https://gitlab.com/api/v3/projects/<project_id>/repository/raw_blobs/<file_id>?private_token=<your_private_token> <drupal_folder>
(Si vous cherchez ici un flux de travail pour intégrer GitLab aux plates-formes Aegir .make sans utiliser de jetons (peut-être SSH ?), veuillez créer un fil de discussion et coller ici le lien.)
MODIFIER
Vous pouvez obtenir le fichier sans le project_id
en utilisant le encodé nom du projet. Par exemple le my-user-name/my-project
deviendra :my-user-name%2Fmy-project