On the CI server, I want to fetch a config file that we maintain on Github so it can be shared between many jobs. I'm trying to get this file via curl, but these approaches both fail (I get a 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
Just an addition to the accepted answer, If you are using Github Enterprise url is slightly different:
I ran into an authentication error when the url was redirected to Amazon S3:
Changing from the
Authorization: token X
header to the?access_token=<token>
query param worked for me.I was struggling with this for a few minutes until I realized all that is needed is to wrap the url in quotes to escape the ampersand.
That worked for me in my private repo.
The previous answers don't work (or don't work anymore).
You can use the V3 API to get a raw file like this (you'll need an OAuth token):
curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept: application/vnd.github.v3.raw' -O -L https://api.github.com/repos/owner/repo/contents/path
All of this has to go on one line. The
-O
option saves the file in the current directory. You can use-o filename
to specify a different filename.To get the OAuth token follow the instructions here: https://help.github.com/articles/creating-an-access-token-for-command-line-use
I've written this up as a gist as well: https://gist.github.com/madrobby/9476733
EDIT: API references for the solution are as follows:
You can do this with a raw link.
I know this is an old question, but none of the solutions proposed above worked for me. Perhaps the API has changed since then.
This worked:
curl -H 'Authorization: token [insert your token here]' -o output.txt https://raw.githubusercontent.com/[organization]/[repo]/[branch]/[path to file]