Ich möchte auf dem CI-Server eine Konfigurationsdatei abrufen, die wir auf Github verwalten, damit sie von vielen Jobs gemeinsam genutzt werden kann. Ich versuche, diese Datei über curl zu bekommen, aber beide Ansätze schlagen fehl (ich bekomme eine 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
Die vorherigen Antworten funktionieren nicht (oder nicht mehr).
Sie können die V3-API verwenden, um eine Rohdatei wie diese zu erhalten (Sie benötigen ein 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 dies muss in einer Zeile erfolgen. Das -O
Option speichert die Datei im aktuellen Verzeichnis. Sie können -o filename
, um einen anderen Dateinamen anzugeben.
Um das OAuth zu erhalten, folgen Sie den Anweisungen hier: https://help.github.com/articles/creating-an-access-token-for-command-line-use
Ich habe dies auch als Gist geschrieben: https://Gist.github.com/madrobby/94767
BEARBEITEN: API-Referenzen für die Lösung lauten wie folgt:
Alternativ können Sie ein github "Persönliches Zugriffstoken" ( https://github.com/settings/tokens ) verwenden:
TOKEN=...
curl -s https://[email protected]/<user or organization>/<repo name>/<branch>/<path to file>/<file_name>
Beispiel:
$ curl -s https://[email protected]/concourse/concourse/master/README.md
....
Ich weiß, dass dies eine alte Frage ist, aber keine der oben vorgeschlagenen Lösungen hat für mich funktioniert. Vielleicht hat sich die API seitdem geändert.
Das hat funktioniert:
curl -H 'Authorization: token [insert your token here]' -o output.txt https://raw.githubusercontent.com/[organization]/[repo]/[branch]/[path to file]
Oder wenn Sie kein Token haben:
curl --user [your_user] 'https://raw.github.com/path/to/file.config' > file.config
Ich hatte ein paar Minuten damit zu kämpfen, bis mir klar wurde, dass nur die URL in Anführungszeichen gesetzt werden muss, um dem Etwas zu entgehen.
curl "https://raw.github.com/org/repo/file?login=username&token=the_token"
Das hat für mich in meinem privaten Repo funktioniert.
Ich habe einen Authentifizierungsfehler erhalten, als die URL zu Amazon S3 umgeleitet wurde:
Es ist nur ein Authentifizierungsmechanismus zulässig. nur der
X-Amz-Algorithm
-Abfrageparameter ...
Der Wechsel vom Authorization: token X
-Header zum ?access_token=<token>
-Abfrageparameter hat für mich funktioniert.
Wir mussten ziemlich oft Dateien von privaten GitHub-Repos herunterladen, und hackige Shell-Skripte haben das nicht ganz geschnitten. Deshalb haben wir fetch entwickelt, ein Open-Source-Tool, das plattformübergreifend ist und das Herunterladen von Quelldateien erleichtert Freigeben von Assets aus einem Git-Tag, einem Commit oder einem Zweig von öffentlichen und privaten GitHub-Repos.
Wenn Sie beispielsweise die Datei baz
von Version 0.1.3
eines privaten GitHub-Repos nach /tmp
herunterladen möchten, gehen Sie folgendermaßen vor:
GITHUB_OAUTH_TOKEN="your token"
fetch --repo="https://github.com/foo/bar" --tag="0.1.3" --source-path="/baz" /tmp
Nur eine Ergänzung zu der akzeptierten Antwort: Wenn Sie die Github Enterprise-URL verwenden, ist dies etwas anders:
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]
Unten sollte gut funktionieren. Ein "raw" vor dem Zweignamen (in diesem Fall Master).
curl -L -O https://github.com/your/repo/raw/master/fetch_file.sh
file_name?token=ABAHQCAT6KG...
wählen Sie Kopieren -> Linkadresse kopieren
uRL ist im Format:
https://raw.githubusercontent.com/<USERNAME>/<PATH>/<FILENAME>?token=ABAHQCAT6KGHYHMG2SLCDT243PH4I
im Terminal:
wget -O myFilename https://raw.githubusercontent.com/<USERNAME>/<PATH>/<FILENAME>?token=ABAHQCAT6KGHYHMG2SLCDT243PH4I
Der Link ist nur für eine begrenzte Zeit gültig oder Sie können Ihr Token erstellen: GitHub article