Je veux utiliser curl
pour télécharger mon dépôt privé dans GitLab. Je sais que je peux utiliser l'API Gitlab, mais pour une raison quelconque, cela ne fonctionne pas.
Est-ce possible? Lorsque j'essaie de le faire de cette façon, il renvoie toujours la page de connexion.
C'est c'est possible, il suffit de suivre ces étapes:
Tout d'abord, vous devez créer un "jeton d'accès personnel":
Cochez " api Accédez à l'API de l'utilisateur authentifié"
Cliquez sur "Créer un jeton d'accès personnel"
Assurez-vous de sauvegarder le jeton dans un endroit sûr, vous ne pourrez plus le consulter.
Maintenant que vous avez votre "jeton d'accès personnel", vous devez obtenir votre identifiant de projet pour utiliser l'API:
Obtenez l'identifiant de votre projet auprès de json.
Vous pouvez maintenant appeler:
wget -O your_project.tar.gz https://gitlab.com/api/v3/projects/0000000/repository/archive?private_token=XXXXXXXXXXXXXXXXXXXX
Et cela téléchargera votre projet en tant que .tar.gz
fichier.
Vous pouvez utiliser le jeton privé qui est le vôtre (dans les "paramètres de profil") pour accéder à n'importe quelle ressource. Accédez simplement au fichier de référentiel que vous souhaitez télécharger, copiez le lien du fichier "brut" et ajoutez? Private_token = ...
Exemple:
curl https://git.local/user1/myrepo/raw/master/myfile.txt?private_token=ahgiretherghaeoi
Vous pouvez, mais vous devez vous authentifier (comme dans " API Gitlab: comment générer le jeton privé ")
curl http://gitlab.server/api/v3/session --data 'login=myUser&password=myPass'
Puis avec le jeton privé :
curl --header "PRIVATE-TOKEN: QVy1PB7sTxfy4pqfZM1U" "http://example.com/api/v3/projects"
Ou, dans votre cas, récupérez les fichiers du référentiel :
GET /projects/:id/repository/files
Ou téléchargez directement un fichier.
Si vous devez le faire dans une exécution CI et que votre dépôt privé est sur le même serveur, vous devriez pouvoir utiliser git submodules pour cloner d'autres dépôts en même temps. En utilisant le ${CI_JOB_TOKEN}
est ne autre option depuis GitLab 8.12.