Auf dem CI-Server möchte ich eine Konfigurationsdatei abrufen, die wir auf Github verwalten, damit sie von vielen Jobs gemeinsam genutzt werden kann. Ich versuche, diese Datei über Curl abzurufen, aber beide Ansätze schlagen fehl (ich erhalte 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
curl -H 'Accept: application/vnd.github.v3.raw' https://api.github.com/repos/owner/repo/contents/path
Gibt die Rohdatei zurück.-H 'Accept: application/vnd.github.v3.raw'
notwendig? Ohne diesen Teil konnte ich auf eine private Datei zugreifen.Alternativ können Sie ein Github-Token für den persönlichen Zugriff verwenden ( https://github.com/settings/tokens ):
Beispiel:
quelle
raw.githubusercontent.com
, 2. Der Pfad ist<username>/<repo name>/<branch>/<file name>
3. Das Token muss über einenrepo
Zugriffsbereich verfügen .?token=...
klicke, ohne den Parameter, wie Sie sagten). Mein Benutzer hat auch eine 2-Faktor-Authentifizierung, und ich gehe davon aus, dass es sich um denselben Token-Bereich handelt (dasrepo
Kontrollkästchen unter github.com/settings/tokens/new ). Wenn das Token ungültig ist oder nicht über denrepo
Gültigkeitsbereich verfügt, erhalten Sie 404 (nicht 401). Ichcurl
funktioniert die Verwendung des Befehls wie oben, aber wenn ich den gleichen Link im Browser öffne oder versuche, ihn über anzufordernjava.net.URL.openStream
, erhalte ich eine 404 ...curl -H 'Authorization: token $TOKEN' $file_url
immer 404'd auf mich. Ich bin mir nicht sicher, warum das eine funktioniert und nicht das andere, aber ich habe die Dokumentation von CURL noch nie vertieft.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]
quelle
[organization]/[repo]/[branch]...
curl -s https://[email protected]/OrgOrUser/RepoName/BranchOrCommitID/file_name.file_extension
? Das ist das einzige, was ich jemals zum Laufen bringen könnte, aber andere Mitarbeiter des Unternehmens haben stattdessen diese Lösung verwendet. Daher denke ich, dass es möglicherweise eine Konfiguration für CURL gibt, die die Verwendungcurl -s...
anstelle dieses CLI-Parametersatzes weniger einschränkend macht .Oder wenn Sie keinen Token haben:
quelle
Ich hatte ein paar Minuten damit zu kämpfen, bis mir klar wurde, dass ich die URL nur in Anführungszeichen setzen muss, um dem kaufmännischen Und zu entkommen.
Das hat bei mir in meinem privaten Repo funktioniert.
quelle
Beim Umleiten der URL zu Amazon S3 ist ein Authentifizierungsfehler aufgetreten:
Der Wechsel vom
Authorization: token X
Header zum?access_token=<token>
Abfrageparameter hat bei mir funktioniert.quelle
Nur eine Ergänzung zu der akzeptierten Antwort: Wenn Sie die Github Enterprise-URL verwenden, ist die URL etwas anders:
quelle
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 Ihren Token: GitHub-Artikel erstellen
quelle
Wir mussten ziemlich oft Dateien von privaten GitHub-Repos herunterladen, und Hacky-Shell-Skripte haben es nicht ganz gekürzt. Deshalb haben wir Fetch erstellt , ein plattformübergreifendes Open-Source-Tool, mit dem Quelldateien einfach heruntergeladen und Assets von einem freigegeben werden können Git-Tag, Commit oder Zweig von öffentlichen und privaten GitHub-Repos.
Um beispielsweise die Datei
baz
von der Version0.1.3
eines privaten GitHub-Repos auf herunterzuladen/tmp
, gehen Sie wie folgt vor:quelle
Überraschenderweise hat keine der Antworten für mich funktioniert, bis ich eine Problemumgehung gefunden habe.
Sie können das persönliche Zugriffstoken https://github.com/settings/tokens verwenden , das von @thomasfuchs beantwortet wird
Hinweis: Beim Erstellen eines Tokens müssen Sie die Administratorrechte überprüfen. Siehe das zugehörige Problem
https://github.com/octokit/octokit.net/issues/1812
quelle
repo
undadmin:org/read:org
.Also, wenn die URL der Rohdatei (wenn angemeldet) ist
Hinweis: Wir haben API v4
quelle
Für GitHub Enterprise und API v3 sah meine Bash-Lösung folgendermaßen aus (einschließlich TOKEN-Bereinigung / Datenschutz):
TOKEN=yourTokenHere; history -d $((HISTCMD-1)) > /dev/null curl -H "Authorization: token $TOKEN" \ -H 'Accept: application/vnd.github.v3.raw' \ -o file.ext \ -L http://github.company.com/api/v3/repos/[org]/[repo]/contents/path/file.ext?ref=[branch] unset TOKEN
quelle
Unten sollte gut funktionieren. Ein "raw" vor Ihrem Filialnamen (in diesem Fall Master).
curl -L -O https://github.com/your/repo/raw/master/fetch_file.sh
quelle
Sie können dies mit einem unformatierten Link tun.
quelle