Op de CI-server wil ik een configuratiebestand ophalen dat we op Github onderhouden, zodat het door veel taken kan worden gedeeld. Ik probeer dit bestand via curl te krijgen, maar deze benaderingen mislukken allebei (ik krijg een 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
Antwoord 1, autoriteit 100%
De vorige antwoorden werken niet (of werken niet meer).
Je kunt de V3-API gebruiken om een onbewerkt bestand als dit te krijgen (je hebt een OAuth-token nodig):
curl -H 'Authorization: token INSERTACCESSTOKENHERE' \
-H 'Accept: application/vnd.github.v3.raw' \
-O \
-L https://api.github.com/repos/owner/repo/contents/path
Dit moet allemaal op één regel. De optie -O
slaat het bestand op in de huidige map. U kunt -o filename
gebruiken om een andere bestandsnaam op te geven.
Volg de instructies hier om de OAuth-token te verkrijgen:
Ik heb dit ook als een kern opgeschreven:
EDIT: API-referenties voor de oplossing zijn als volgt:
- https://developer.github.com/v3/#authentication
- https://developer.github.com/v3/media/# verzoek-specifieke-versie
- https://developer.github.com/v3/repos/contents /#get-contents
Antwoord 2, autoriteit 27%
Als alternatief kunt u een github “personal access token” (https://github.com/settings/tokens gebruiken ):
TOKEN=...
curl -s https://[email protected]/<user or organization>/<repo name>/<branch>/<path to file>/<file_name>
Voorbeeld:
$ curl -s https://[email protected]/concourse/concourse/master/README.md
....
Antwoord 3, autoriteit 11%
Ik weet dat dit een oude vraag is, maar geen van de hierboven voorgestelde oplossingen werkte voor mij. Misschien is de API sindsdien veranderd.
Dit werkte:
curl -H 'Authorization: token [insert your token here]' -o output.txt https://raw.githubusercontent.com/[organization]/[repo]/[branch]/[path to file]
Antwoord 4, autoriteit 5%
Ik worstelde hier een paar minuten mee totdat ik me realiseerde dat je de url alleen tussen aanhalingstekens hoeft te zetten om aan het ampersand te ontsnappen.
curl "https://raw.github.com/org/repo/file?login=username&token=the_token"
Dat werkte voor mij in mijn privé-opslagplaats.
Antwoord 5, autoriteit 5%
Of, als u geen token heeft:
curl --user [your_user] 'https://raw.github.com/path/to/file.config' > file.config
Antwoord 6
Ik kwam een authenticatiefout tegen toen de url werd omgeleid naar Amazon S3:
Slechts één authenticatiemechanisme toegestaan; alleen de
X-Amz-Algorithm
queryparameter…
Het wijzigen van de Authorization: token X
header naar de ?access_token=<token>
queryparameter werkte voor mij.
Antwoord 7
- open in de browser uw github-repo: klik op bestand
- open Developer Tools in browser: selecteer het tabblad Netwerk
- in browser github: klik op de downloadknop
- pop-up sluiten
- in browser dev tools: klik met de rechtermuisknop op de lijst met
file_name?token=ABAHQCAT6KG...
-
selecteer kopiëren -> link adres kopiëren
url heeft de volgende indeling:
https://raw.githubusercontent.com/<USERNAME>/<PATH>/<FILENAME>?token=ABAHQCAT6KGHYHMG2SLCDT243PH4I
-
in terminal:
wget -O myFilename https://raw.githubusercontent.com/<USERNAME>/<PATH>/<FILENAME>?token=ABAHQCAT6KGHYHMG2SLCDT243PH4I
Link is slechts voor een beperkte tijd geldig of u kunt uw token maken: GitHub-artikel
Antwoord 8
Een wat eenvoudigere oplossing IMHO is om Officiële GitHub CLIgh
te gebruiken .
- Eerst moet je ingelogd zijn :
gh auth login
Voor mij is dit commando niet vereist omdat ik al ingelogd ben.
- Vervolgens hebben we een API-URL nodig die is gericht op het te downloaden bestand. En bel
gh
om het te converteren naar een geverifieerde download-URL:
API_URL=https://api.github.com/repos/owner/repo/contents/path/file.ext
curl $(gh api $API_URL --jq .download_url) -o file.ext
Een echt voorbeeld is misschien beter. Hier is het om install_linux.mdte downloaden van gh
cli:
API_URL=https://api.github.com/repos/cli/cli/contents/docs/install_linux.md
curl $(gh api $API_URL --jq .download_url) -o install_linux.md
In API_URL
:
- Gebruiker
owner
iscli
- Repositorynaam
repo
is ookcli
- Pad naar bestand (
path/file.ext
) isdocs/install_linux.md
Antwoord 9
We moesten vrij vaak bestanden downloaden van privé GitHub-repo’s en hacky shell-scripts sneden het niet helemaal, dus creëerden we fetch, een open source, platformonafhankelijke tool die het gemakkelijk maakt om bronbestanden te downloaden en activa vrij te geven van een git-tag, commit of branch van publieke en private GitHub-repo’s.
Als u bijvoorbeeld het bestand baz
van versie 0.1.3
van een privé GitHub-repo naar /tmp
wilt downloaden, doet u het volgende: volgende:
GITHUB_OAUTH_TOKEN="your token"
fetch --repo="https://github.com/foo/bar" --tag="0.1.3" --source-path="/baz" /tmp
Antwoord 10
Gewoon een aanvulling op het geaccepteerde antwoord, als u Github Enterprise gebruikt, is de url iets 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]
Antwoord 11
Verrassend genoeg werkte geen van de antwoorden voor mij totdat ik een tijdelijke oplossing vond.
U kunt persoonlijke toegangstoken https://github.com/settings/tokensgebruiken zoals beantwoord door @thomasfuchs
Opmerking: tijdens het maken van een token moet u de beheerdersrechten controleren. Zie het gerelateerde probleem
https://github.com/octokit/octokit.net/issues/1812
Antwoord 12
Ik heb het voor github enterprise kunnen laten werken, bedankt voor de bovenstaande suggesties. Ik moest al je suggesties aannemen en proberen en uiteindelijk kon ik het laten werken. Dit zijn de stappen die ik heb gevolgd om het werkend te krijgen.
- Maak een persoonlijke token, volg deze stappen:
https://docs .github.com/en/github/authenticating-to-github/creating-a-personal-access-token
-
Zorg ervoor dat u minimaal de volgende rechten heeft voor de token:
-
Gebruik de volgende curl-opdracht om de inhoud op te halen:
curl -H "Authorization: token [yourPersonalToken]" -H "Accept: application/vnd.github.v3.raw" -o [filePath]-content.json -L https://github.[company].com/api/v3/repos/[ORG]/[REPO_NAME]/contents/[PATH_TO_FILE]/content.json?ref=[BRANCH_NAME]
Waar->
[yourPersonalToken] is the token you created.
[filePath] is a path where you want to save the downloaded copy.
[company] is the name of company which hosted the github enterprise.
[ORG] is the github organization is which repo is created.
[REPO_NAME] is the name of the repository.
[PATH_TO_FILE] is the path where file is located.
[BRANCH_NAME] is the name of the branch you want to use, e.g. master, develop etc.
Voorbeeld:
curl -H "Authorization: token 5a86ecda9ff927baaa66fad2af5bee8" -H "Accept: application/vnd.github.v3.raw" -o C:\Downloads\manifest.json -L https://github.example.com/api/v3/repos/cms/cms_one/contents/app/data/manifest.json?ref=master
Antwoord 13
curl -H 'Authorization: token YOUR_TOKEN' \
-H 'Accept: application/vnd.github.v4.raw' \
-O \
-L https://api.github.com/repos/INSERT_OWNER_HERE/INSERT_REPO_HERE/contents/PATH/TO/FILE
Dus als de url van het onbewerkte bestand (indien ingelogd) is
https://raw.githubusercontent.com/mr_coder/my_repo_name/master/my_script
Then
-L https://api.github.com/repos/INSERT_OWNER_HERE/INSERT_REPO_HERE/contents/PATH/TO/FILE
becomes
-L https://api.github.com/repos/mr_coder/my_repo_name/contents/my_script
Opmerking: we hebben API v4
Antwoord 14
Voor GitHub Enterprise en API v3 zag mijn bash-oplossing er als volgt uit (inclusief TOKEN-opruiming / privacy):
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
Antwoord 15
Ik denk dat het een beetje gevaarlijke en geen goede manier is om een persoonlijk toegangstoken uit te geven dat toegang heeft tot alle repositories, zelfs als je maar een enkel bestand uit mijn privérepository downloadt.
Hoe –
Ik zou graag aanraden om url met token voor één bestandte gebruiken. Maak je geen zorgen. De token-string wordt automatisch gegenereerd door github. U kunt deze url op uw broncodepagina krijgen.
- Ga naar de broncodepagina wat je wilt downloaden via curl of wget, enz.
- Zoek de ‘onbewerkte’ knop en klik erop.
- Nieuwe pagina geopend en kopieer de url. Deze url ziet er als volgt uit:
(https://raw.githubusercontent.com/USERNAME/REPONAME/BRANCHNAME /FILENAME?token=TOKENSTRING). - Je kunt een bestand downloaden met deze url
Antwoord 16
Ik heb een eenvoudige truc geprobeerd om een GitHub privé .iypnb-bestand te openen in zowel Pycharm als Colab en het werkte goed voor mij.
- krijg onbewerkte tekst voor je .ipynb-bestand door op de Raw-knop te drukken, dit zal openen
wat tekst zoals deze.
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": []
}]
}
-
open kladblok/teksteditor op os (bijv. Windows) kopieer alle tekst naar een nieuw kladblok-bestand.
-
kladblok opslaan als naam.ipynb in plaats van naam.txt
en sla op als bestandstype Alle bestanden(.) in plaats van Tekstdocumenten (*.txt) -
open eindelijk het bestand in je IDE of colab.
Antwoord 17
Hieronder zou goed moeten werken. Een “raw” voor je branchnaam (master in dit geval).
curl -L -O https://github.com/your/repo/raw/master/fetch_file.sh
Antwoord 18
Je kunt dit doen met een onbewerkte link.
curl -O https://raw.githubusercontent.com/owner/repo/branchname/path/to/file