Загрузите приватный zip файл репозитория BitBucket с помощью http-аутентификации
Я пишу script, чтобы легко развернуть приложение. Код приложения хранится в частном репозитории BitBucket.
Я хочу, чтобы можно было скачать zip файл коммита. Я попробовал аутентификацию со следующим кодом:
https://user:[email protected]/user/repo/get/commit.zip
Однако вместо выполнения задачи он перенаправляется на страницу входа в BitBucket.
Ответы
Ответ 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
Ответ 6
Использует ли инструмент, который поддерживает базовые учетные данные для проверки подлинности в URL? Запрос Curl с дайджестом auth в PHP для загрузки частного репозитория Bitbucket подразумевает, что:
curl --user user:pass https://bitbucket.org/user/repo/get/commit.zip >commit.zip
работы.
Ответ 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