Как загрузить один необработанный файл из частного github-репо с помощью командной строки?
На сервере CI я хочу получить конфигурационный файл, который мы поддерживаем в Github, чтобы он мог использоваться для многих заданий. Я пытаюсь получить этот файл с помощью curl, но эти подходы оба терпят неудачу (я получаю 404):
# As advised by the oAuth docs
curl -H 'Authorization: token the_token' -L -o setup.sh https://raw.github.com/org/repo/file
# The url of the raw file after clicking to view it
curl -L https://raw.github.com/org/repo/file?login=username&token=the_token
Ответы
Ответ 1
Предыдущие ответы не работают (или больше не работают).
Вы можете использовать API V3 для получения необработанного файла (вам нужен токен OAuth):
curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept: application/vnd.github.v3.raw' -O -L https://api.github.com/repos/owner/repo/contents/path
Все это должно идти по одной строке. Опция -O
сохраняет файл в текущем каталоге. Вы можете использовать -o filename
, чтобы указать другое имя файла.
Чтобы получить токен OAuth, следуйте инструкциям здесь:
https://help.github.com/articles/creating-an-access-token-for-command-line-use
Я написал это как сущность:
https://gist.github.com/madrobby/9476733
EDIT: ссылки API для решения следующие:
Ответ 2
Кроме того, вы можете использовать github "токен личного доступа" (https://github.com/settings/tokens):
TOKEN=...
curl -s https://[email protected]/<user or organization>/<repo name>/<branch>/<path to file>/<file_name>
Пример:
$ curl -s https://[email protected]/concourse/concourse/master/README.md
....
Ответ 3
Я знаю, что это старый вопрос, но ни одно из предложенных выше решений не помогло мне. Возможно, с тех пор API изменился.
Это сработало:
curl -H 'Authorization: token [insert your token here]' -o output.txt https://raw.githubusercontent.com/[organization]/[repo]/[branch]/[path to file]
Ответ 4
Или, если у вас нет токена:
curl --user [your_user] 'https://raw.github.com/path/to/file.config' > file.config
Ответ 5
Я боролся с этим в течение нескольких минут, пока не понял, что все, что нужно, - это обернуть URL в кавычки, чтобы избежать амперсанда.
curl "https://raw.github.com/org/repo/file?login=username&token=the_token"
Это работало для меня в моем частном репо.
Ответ 6
Я столкнулся с ошибкой аутентификации, когда URL был перенаправлен на Amazon S3:
Разрешен только один механизм авторизации; только параметр запроса X-Amz-Algorithm
...
Для меня изменился переход от заголовка Authorization: token X
к параметру запроса ?access_token=<token>
.
Ответ 7
Нам приходилось довольно часто скачивать файлы из частных репозиториев GitHub, а скрипты хакерской оболочки не совсем сокращали его, поэтому мы создали fetch, который представляет собой кросс-платформенный инструмент с открытым исходным кодом, который упрощает загрузку исходных файлов и выпуск активов из тега git, фиксации или ветки публичных и частных репозиториев GitHub.
Например, чтобы загрузить файл baz
из версии 0.1.3
частного репозитория GitHub в /tmp
, вы должны сделать следующее:
GITHUB_OAUTH_TOKEN="your token"
fetch --repo="https://github.com/foo/bar" --tag="0.1.3" --source-path="/baz" /tmp
Ответ 8
Ниже следует работать нормально. "Сырой" перед именем вашей ветки (мастер в этом случае).
curl -L -O https://github.com/your/repo/raw/master/fetch_file.sh
Ответ 9
Просто дополнение к принятому ответу. Если вы используете Github Enterprise, URL-адрес немного отличается:
curl -H 'Authorization: token [your token]' \
-H 'Accept: application/vnd.github.v3.raw' \
-L https://[your domain]/api/v3/repos/[owner]/[repo-name]/contents/[path of file]
Ответ 10
- в браузере откройте репозиторий github: нажмите на файл
- Откройте Инструменты разработчика в браузере: выберите вкладку Сеть
- в браузере GitHub: нажмите на кнопку Скачать
- закрыть всплывающее окно
- в инструментах разработчика браузера: щелкните правой кнопкой мыши по списку, который имеет
file_name?token=ABAHQCAT6KG...
-
выберите скопировать → скопировать адрес ссылки
URL-адрес в формате:
https://raw.githubusercontent.com/<USERNAME>/<PATH>/<FILENAME>?token=ABAHQCAT6KGHYHMG2SLCDT243PH4I
-
в терминале:
wget -O myFilename https://raw.githubusercontent.com/<USERNAME>/<PATH>/<FILENAME>?token=ABAHQCAT6KGHYHMG2SLCDT243PH4I
Ссылка действительна только в течение ограниченного времени, или вы можете создать свой токен: статья GitHub
Ответ 11
Вы можете сделать это с помощью необработанной ссылки.
curl -O https://raw.githubusercontent.com/owner/repo/branchname/path/to/file