我如何使用命令行从私人github回购下载单个原始文件?
在CI服务器上,我想获取一个我们在Github上维护的configuration文件,以便在多个作业之间共享。 我试图通过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
以前的答案不工作(或不再工作)。
您可以使用V3 API来获取这样的原始文件(您需要一个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
编辑:该解决scheme的API参考如下:
我知道这是一个古老的问题,但是上面提出的解决scheme都没有为我工作。 从那时起API可能已经改变了。
这工作:
curl -H 'Authorization: token [insert your token here]' -o output.txt https://raw.githubusercontent.com/[organization]/[repo]/[branch]/[path to file]
或者,如果你没有一个令牌:
curl --user [your_user] 'https://raw.github.com/path/to/file.config' > file.config
或者,您可以使用github“个人访问令牌”( https://github.com/settings/tokens ):
TOKEN=... curl -s https://$TOKEN@raw.githubusercontent.com/<user or organization>/<repo name>/<branch>/<path to file>/<file_name>
例:
$ curl -s https://1bacnotmyrealtoken123beefbea@raw.githubusercontent.com/concourse/concourse/master/README.md ....
下面应该工作正常。 分支名称之前的“原始”(本例中为主)。
curl -L -O https://github.com/your/repo/raw/master/fetch_file.sh
我一直在挣扎几分钟,直到我意识到所有需要的是将URL包含在引号中以避开&符。
curl "https://raw.github.com/org/repo/file?login=username&token=the_token"
这在我的私人回购中适用于我。
当url被redirect到Amazon S3时,我遇到了一个身份validation错误:
只允许一个授权机制; 只有
X-Amz-Algorithm
查询参数…
从Authorization: token X
标头更改为?access_token=<token>
查询参数为我工作。
我们不得不经常从私有的GitHub回购站点下载文件,而且hacky的shell脚本并没有完全削减它,所以我们创build了fetch ,这是一个开源的跨平台工具,可以很容易地从源文件下载源文件并释放资源git标签,提交或公共和私人GitHub回购分支。
例如,要将私人GitHub库的0.1.3
版本的文件baz
下载到/tmp
,您可以执行以下操作:
GITHUB_OAUTH_TOKEN="your token" fetch --repo="https://github.com/foo/bar" --tag="0.1.3" --source-path="/baz" /tmp
您可以使用原始链接执行此操作。
curl -O https://raw.githubusercontent.com/owner/repo/branchname/path/to/file