GNU/Linux >> Tutoriels Linux >  >> Linux

Ouvrir un fichier directement depuis un dépôt privé GitLab

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


Linux
  1. Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

  2. Kubuntu affiche une erreur lors de la connexion (file:///usr/share/sddm//themes/breeze/main.qml:no Such File Or Directory) ?

  3. Ubuntu 14.04 "n'a pas obtenu d'Uri de lecture sur le fichier d'entrée:///*" ?

  4. Installer les binaires dans /bin, /sbin, /usr/bin et /usr/sbin, interactions avec --prefix et DESTDIR

  5. Django static_root dans /var/www/... - aucune autorisation pour collectstatic

Comprendre les fichiers /proc/mounts, /etc/mtab et /proc/partitions

Quand dois-je utiliser /dev/shm/ et quand dois-je utiliser /tmp/?

Comment savoir à partir de quel dossier un processus est en cours d'exécution ?

unix:///var/run/supervisor.sock aucun fichier de ce type

/sys/ documentation ?

Les sites Web doivent-ils vivre dans /var/ ou /usr/ selon l'utilisation recommandée ?