Подтвердить что ты не робот

Загрузите приватный zip файл репозитория BitBucket с помощью http-аутентификации

Я пишу script, чтобы легко развернуть приложение. Код приложения хранится в частном репозитории BitBucket.

Я хочу, чтобы можно было скачать zip файл коммита. Я попробовал аутентификацию со следующим кодом:

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

Однако вместо выполнения задачи он перенаправляется на страницу входа в BitBucket.

4b9b3361

Ответ 1

Лично я не хотел вводить свой пароль в свой script, чтобы выполнить это. Таким образом, трюк состоял в том, чтобы запустить следующую команду после добавления вашего открытого ключа в вашу учетную запись bitbucket:

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

У меня есть несколько ключей в моей системе, и если вы это сделаете, вы захотите создать файл конфигурации в каталоге ~/.ssh, который указывает на использование определенного ключа для битбакетных соединений.

~/.ssh/конфигурации

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

Ответ 2

Чтобы загрузить ZIP-копию частного репозитория Bitbucket из командной строки, используйте следующее:

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

где <username> и <password> - имя учетной записи Bitbucket и пароль, <repository> - это имя репо, а <branchname> - ветвь. Если вы предпочитаете загружать определенную фиксацию, используйте хэш SHA-1 для фиксации вместо <branchname>.

Флаг --digest предназначен для вашей безопасности и рекомендуется .. Он выполняет аутентификацию, чтобы ваше имя пользователя и пароль не были отправлены в поле clear. Флаг -o отправляет вывод команды curl на диск в виде файла вместо потоковой передачи через экран вашего терминала.

Примечание: Схема аутентификации Bitbucket не совместима с wget. Вот почему вы должны использовать curl.

Для общедоступных репозиториев Bitbucket команда:

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

Или, альтернативно, вы можете использовать wget для общедоступных репозиториев, поскольку не требуется аутентификация:

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

В дополнение к формату .zip вы можете загружать репозитории в .gz и .bz2. Просто замените .zip в приведенном выше коде либо .gz, либо .bz2, чтобы загрузить репозиторий в сжатом формате по вашему выбору.

Ответ 3

Флаг --digest предназначен для вашей безопасности и настоятельно рекомендуется. Он выполняет аутентификацию, так что ваше имя пользователя и пароль не отправляются в поле clear.

Это не так.

Bitbucket исключительно использует TLS, и поэтому ни в коем случае ничего не происходит по проводу в ясном тексте. В результате Digest не дает преимуществ по сравнению с Basic Auth. На самом деле, учитывая, что дайджест инициируется сервером, вы получаете дополнительный сервер в обратном направлении, запрашивающий предоставленное сервером nonce.

Наше использование Digest было избыточным и устарело с тех пор, как мы перестали предлагать незашифрованный HTTP-доступ несколько лет назад и сохранялись только потому, что были скрипты на основе curl, выполняющие --digest, как было предложено @GrowlTiger.

Фактически, мы собираемся отключить Digest в целом 1 мая, после чего curl --digest перестанет работать.

Дополнительная информация может быть найдена: https://blog.bitbucket.org/2015/04/03/fare-thee-well-digest-access-authentication/

Ответ 4

Для тех, кто хочет загрузить отдельный файл из частного репо на bitbucket, я пробовал выше, но никто не работал. Наконец, я начал работать с командой:

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

Ответ 5

Ответы GrowlTigers здоровы, просто обновление: с wget, похоже, теперь работает:

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

Ответ 7

Я обнаружил, что это работает в более новой версии 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