web-dev-qa-db-fra.com

Télécharger le fichier Zip du référentiel BitBucket privé à l'aide de l'authentification http

J'écris un script pour déployer facilement une application. Le code de l'application est stocké dans un référentiel privé BitBucket.

J'aimerais pouvoir télécharger un fichier Zip du commit. J'ai essayé de m'authentifier avec le code suivant:

https://user:[email protected]/user/repo/get/commit.Zip

Cependant, au lieu d’accomplir cette tâche, il redirige vers la page de connexion de BitBucket.

27
user2117190

Personnellement, je ne voulais pas mettre mon mot de passe dans mon script pour accomplir cela. L'astuce consistait donc à exécuter la commande suivante, après avoir ajouté votre clé publique à votre compte bitbucket:

git archive --remote=ssh://[email protected]/your_bitbucket_username/your_repository.git --format=Zip --output="name_of_your_desired_Zip_file.Zip" master

J'ai plusieurs clés sur mon système. Si vous en avez aussi, vous voudrez créer un fichier de configuration dans votre répertoire ~/.ssh qui spécifie l'utilisation d'une clé spécifique pour les connexions bitbucket. 

~/.ssh/config

Host bitbucket.org
  StrictHostKeyChecking no
  IdentityFile /home/me/.ssh/my_private_key
32
Nick

Pour télécharger une copie compressée d'un référentiel BitBucket private à partir de la ligne de commande, utilisez les éléments suivants:

curl --digest --user <username>:<password> https://bitbucket.org/<username>/<repository>/get/<branchname>.Zip -o <branchname>.Zip

<username> et <password> sont le nom et le mot de passe du compte Bitbucket, <repository> est le nom du référentiel et <branchname> est la branche. Si vous préférez télécharger un commit spécifique, utilisez le hachage SHA-1 du commit à la place de <branchname>..

L’indicateur --digest sert à votre sécurité et est hautement recommandé. _ Il accomplit l’authentification de sorte que votre nom d’utilisateur et votre mot de passe soient non envoyés en clair. L’indicateur -o envoie la sortie de la commande curl sur le disque sous forme de fichier, au lieu de la diffuser sur l’écran de votre terminal.

Remarque: Le schéma d'authentification de Bitbucket n'est pas compatible avec wget. C'est pourquoi vous devez utiliser curl.

Pour public les référentiels Bitbucket, la commande est la suivante:

curl https://bitbucket.org/<username>/<repository>/get/<branchname>.Zip -o <branchname>.Zip

Ou bien, vous pouvez utiliser wget pour les référentiels publics car aucune authentification n'est requise:

wget https://bitbucket.org/<username>/<repository>/get/<branchname>.Zip

En plus du format .Zip, vous pouvez télécharger des référentiels dans les variantes .gz et .bz2. Remplacez simplement .Zip dans le code ci-dessus par .gz ou .bz2pour télécharger le référentiel au format compressé de votre choix.

28
GrowlTiger

Le drapeau --digest est pour votre sécurité et est fortement recommandé. Il s'authentifie de sorte que votre nom d'utilisateur et votre mot de passe ne soient pas envoyés en clair.

Ce n'est pas vrai.

Bitbucket utilise exclusivement TLS, ce qui évite tout ce qui se passe en clair. En conséquence, Digest ne procure aucun avantage par rapport à l’authentification de base. En fait, étant donné que Digest est initié par le serveur, vous effectuez un aller-retour supplémentaire du serveur demandant le nonce fourni par le serveur.

Notre utilisation de Digest est redondante et obsolète depuis que nous avons cessé d'offrir un accès HTTP non crypté il y a plusieurs années. Elle a été conservée uniquement parce que des scripts basés sur curl exécutaient --digest, comme suggéré par @GrowlTiger.

En fait, nous sommes sur le point de désactiver complètement Digest le 1er mai, après quoi curl --digest cessera de fonctionner.

Plus d'informations peuvent être trouvées: https://blog.bitbucket.org/2015/04/03/fare-thee-well-digest-access-authentication/

11
Erik van Zijst

Pour ceux qui veulent télécharger un seul fichier depuis un dépôt privé sur bitbucket, j'ai essayé ce qui précède, mais aucun n'a fonctionné. Enfin, je l'ai obtenu avec la commande ci-dessous:

wget --user=<user> --password=<password> https://bitbucket.org/<user>/<repo>/raw/master/<filename>
6
laike9m

La réponse de GrowlTigers est excellente, il s’agit simplement d’une mise à jour: avec wget, elle semble fonctionner maintenant aussi:

wget --user=<username> --password='<password>' https://bitbucket.org/<user>/<repo>/get/<filename>.tar.gz
2
mstra001

L'outil que vous utilisez prend-il en charge les informations d'identification d'authentification de base dans l'URL? Demande Curl avec l'authentification de résumé dans PHP pour le téléchargement du référentiel privé Bitbucket implique fortement que

curl --user user:pass https://bitbucket.org/user/repo/get/commit.Zip >commit.Zip

travaux.

1
Joe

J'ai trouvé que cela fonctionnait dans la nouvelle version de Bitbucket

repository_list=" a b c"
for repository in ${repository_list}
do
    echo "Getting: ${repository}"
    curl --user userid:password \
         http://bitjira.xxx.com:7990/rest/api/latest/projects/WP/repos/${repository}/archive?format=Zip  \
         -o ${repository}.Zip
done
0
Peter Lenahan