wake-up-neo.com

Laden Sie die private BitBucket-Repository-Zip-Datei mit der HTTP-Authentifizierung herunter

Ich schreibe ein Skript, um eine Anwendung problemlos bereitzustellen. Der Code für die Anwendung wird in einem privaten BitBucket-Repository gespeichert.

Ich möchte gerne eine Zip-Datei des Commits herunterladen. Ich habe versucht, mich mit folgendem Code zu authentifizieren:

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

Anstatt die Aufgabe auszuführen, leitet sie jedoch zur Anmeldeseite von BitBucket um.

27
user2117190

Persönlich wollte ich mein Passwort nicht in mein Skript einfügen, um dies zu erreichen. Der Trick bestand also darin, den folgenden Befehl auszuführen, nachdem Sie Ihren öffentlichen Schlüssel Ihrem Bitbucket-Konto hinzugefügt haben:

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

Ich habe mehrere Schlüssel auf meinem System. Wenn Sie dies auch tun, möchten Sie eine Konfigurationsdatei in Ihrem Verzeichnis ~/.ssh erstellen, die angibt, einen bestimmten Schlüssel für Bitbucket-Verbindungen zu verwenden. 

~/.ssh/config

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

Um eine gezippte Kopie eines private Bitbucket-Repositorys von der Befehlszeile herunterzuladen, verwenden Sie Folgendes:

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

dabei sind <username> und <password> der Name und das Kennwort des Bitbucket-Kontos, <repository> der Repo-Name und <branchname> der Zweig. Wenn Sie lieber ein bestimmtes Commit herunterladen möchten, verwenden Sie den SHA-1-Hash des Commits anstelle von <branchname>..

Das --digest-Flag dient Ihrer Sicherheit und ist sehr empfehlenswert. Es führt eine Authentifizierung durch, sodass Ihr Benutzername und Ihr Kennwort nicht klar gesendet werden. Das Flag -o sendet die Ausgabe des Befehls curl als Datei auf die Festplatte, anstatt über den Bildschirm Ihres Terminals zu strömen.

Hinweis: Das Authentifizierungsschema von Bitbucket ist nicht mit wget. kompatibel. Deshalb müssen Sie curl. verwenden.

Für public Bitbucket-Repositorys lautet der Befehl:

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

Alternativ können Sie wget für öffentliche Repositorys verwenden, da keine Authentifizierung erforderlich ist:

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

Zusätzlich zum .Zip-Format können Sie Repositorys in .gz- und .bz2-Varianten herunterladen. Ersetzen Sie einfach .Zip im obigen Code durch entweder .gz oder .bz2, um das Repository im komprimierten Format Ihrer Wahl herunterzuladen.

28
GrowlTiger

Das Flag --digest dient Ihrer Sicherheit und wird dringend empfohlen. Es führt eine Authentifizierung durch, sodass Ihr Benutzername und Ihr Kennwort nicht eindeutig gesendet werden.

Das stimmt nicht.

Bitbucket verwendet ausschließlich TLS, so dass zu keinem Zeitpunkt im Klartext etwas überspannt wird. Daher bietet Digest keinen Vorteil gegenüber Basic Auth. In Anbetracht der Tatsache, dass Digest vom Server initiiert wird, entsteht eine zusätzliche Server-Rundreise, die den vom Server bereitgestellten Nonce anfordert.

Unsere Verwendung von Digest war redundant und veraltet, seit wir vor einigen Jahren keinen unverschlüsselten HTTP-Zugriff mehr angeboten haben, und wurde nur deshalb beibehalten, weil es auf Curl-basierte Skripts --digest gab, wie von @GrowlTiger vorgeschlagen.

Tatsächlich werden wir Digest am 1. Mai vollständig ausschalten, woraufhin curl --digest nicht mehr funktioniert.

Weitere Informationen finden Sie unter: https://blog.bitbucket.org/2015/04/03/fare-thee-well-digest-access-authentication/

11
Erik van Zijst

Für diejenigen, die eine einzelne Datei von privatem Repo auf Bitbucket herunterladen möchten, habe ich es oben ausprobiert, aber keine hat funktioniert. Schließlich bekam ich es mit dem folgenden Befehl:

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

Die Antwort von GrowlTiger ist großartig, nur ein Update: Mit wget scheint es jetzt auch zu funktionieren:

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

Unterstützt das von Ihnen verwendete Tool grundlegende Anmeldeinformationen für die Authentifizierung in der URL? Curl-Anfrage mit Digest-Auth in PHP zum Herunterladen Bitbucket-Privat-Repository impliziert Folgendes:

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

funktioniert.

1
Joe

Ich fand, dass dies in der neueren Version von Bitbucket funktionierte

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