Sur le serveur CI, je veux récupérer un fichier de configuration que nous gérons sur Github afin de pouvoir le partager entre plusieurs tâches. J'essaie d'obtenir ce fichier via curl, mais ces deux approches échouent (je reçois un 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
Les réponses précédentes ne fonctionnent pas (ou ne fonctionnent plus).
Vous pouvez utiliser l'API V3 pour obtenir un fichier brut comme celui-ci (vous aurez besoin d'un jeton OAuth):
curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept: application/vnd.github.v3.raw' -O -L https://api.github.com/repos/owner/repo/contents/path
Tout cela doit aller sur une seule ligne. L'option -O
enregistre le fichier dans le répertoire en cours. Vous pouvez utiliser -o filename
pour spécifier un nom de fichier différent.
Pour obtenir le jeton OAuth, suivez les instructions suivantes: https://help.github.com/articles/creating-an-access-token-for-command-line-use
J'ai aussi écrit ceci en tant que Gist: https://Gist.github.com/madrobby/9476733
EDIT: les références d’API pour la solution sont les suivantes:
Vous pouvez également utiliser un "jeton d'accès personnel" de github ( https://github.com/settings/tokens ):
TOKEN=...
curl -s https://[email protected]/<user or organization>/<repo name>/<branch>/<path to file>/<file_name>
Exemple:
$ curl -s https://[email protected]/concourse/concourse/master/README.md
....
Je sais que c'est une vieille question, mais aucune des solutions proposées ci-dessus n'a fonctionné pour moi. Peut-être que l'API a changé depuis.
Cela a fonctionné:
curl -H 'Authorization: token [insert your token here]' -o output.txt https://raw.githubusercontent.com/[organization]/[repo]/[branch]/[path to file]
Ou, si vous n'avez pas de jeton:
curl --user [your_user] 'https://raw.github.com/path/to/file.config' > file.config
Je me débattais avec cela pendant quelques minutes jusqu'à ce que je réalise que tout ce qui était nécessaire était d'envelopper l'URL entre guillemets pour échapper à l'esperluette.
curl "https://raw.github.com/org/repo/file?login=username&token=the_token"
Cela a fonctionné pour moi dans mon dépôt privé.
J'ai rencontré une erreur d'authentification lorsque l'URL a été redirigé vers Amazon S3:
Un seul mécanisme d'autorisation est autorisé; seul le paramètre de requête
X-Amz-Algorithm
...
Passer de l'en-tête Authorization: token X
au paramètre de requête ?access_token=<token>
a fonctionné pour moi.
Nous devions télécharger des fichiers depuis des dépôts privés GitHub assez souvent et les scripts de hacky Shell ne le réduisaient pas vraiment. Nous avons donc créé fetch , qui est un outil open source et multi-plateforme facilitant le téléchargement de fichiers source et libérer des actifs à partir d'une balise git, d'un commit ou d'une branche de repos GitHub publics et privés.
Par exemple, pour télécharger le fichier baz
à partir de la version 0.1.3
d'un dépôt GitHub privé vers /tmp
, procédez comme suit:
GITHUB_OAUTH_TOKEN="your token"
fetch --repo="https://github.com/foo/bar" --tag="0.1.3" --source-path="/baz" /tmp
Juste un ajout à la réponse acceptée, si vous utilisez l’URL de Github Enterprise est légèrement différente:
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]
Ci-dessous devrait bien fonctionner. Un "brut" devant le nom de votre branche (maître dans ce cas).
curl -L -O https://github.com/your/repo/raw/master/fetch_file.sh
file_name?token=ABAHQCAT6KG...
sélectionner une copie -> copier l'adresse du lien
l'URL est au format:
https://raw.githubusercontent.com/<USERNAME>/<PATH>/<FILENAME>?token=ABAHQCAT6KGHYHMG2SLCDT243PH4I
dans le terminal:
wget -O myFilename https://raw.githubusercontent.com/<USERNAME>/<PATH>/<FILENAME>?token=ABAHQCAT6KGHYHMG2SLCDT243PH4I
Le lien n’est valable que pour un temps limité ou vous pouvez créer votre jeton: Article GitHub