Se desideri accedere a un file da GitLab privato, puoi utilizzare l'approccio seguente che ha funzionato per me :)
Costruisci l'URL:
https://url/api/v4/projects/projectId/repository/files/fileName/raw?ref=master&private_token=Generated_private_token
- url è il tuo URL Gitlab ex:git.lab.com.
- /api/v4/projects è una costante.
- ID progetto è il projectId del tuo progetto, che puoi trovare sotto il nome del tuo progetto in gitlab.
- /repository/files è di nuovo una costante.
- nomefile è il nome del file es:sagar.txt
- /raw?ref= è una costante e il valore di ref può essere master o qualsiasi ramo da cui si desidera prelevare il file. Sto recuperando il file da Master.
- Token_privato_generato dovrebbe essere generato da gitlab, segui i passaggi indicati nel link :Generate Private Token
Aggiornamento 25-12-2018:
fintanto che non stai scaricando file enormi, dovrebbe funzionare:
curl -s -H "Private-Token: <token>" "https://gitlab.com/api/v4/projects/<urlencode("gitlab_username/project_name")>/repository/files/<path/to/file>/raw?ref=<branch_name>"
, un esempio reale, scaricando il file /README.md
dal repository privato https://gitlab.com/divinity76/Yur17
, dove l'URL di download dal Web è https://gitlab.com/divinity76/Yur17/raw/master/README.md?inline=false
, è:
curl -s -H "Private-Token: afF2s1xgk6xcwXHy3J4C" "https://gitlab.com/api/v4/projects/divinity76%2Fyur17/repository/files/README%2Emd/raw?ref=master"
prendi nota in particolare di come il gitlab_username/repo_name
era codificato nell'URL, ad esempio /
è diventato %2F
(puoi verificare come il tuo nome utente e nome repository sono codificati in URL aprendo il terminale javascript del tuo browser e scrivendo encodeURIComponent("your_username/repo_name");
nel terminale e premi invio.)
grazie a Jonathan Hall
@ gitlab su mg.gitlab.com e https://docs.gitlab.com/ee/api/repository_files.html e tvl per averci aiutato a trovare una soluzione.
Aggiornamento 11-12-2018:questo metodo non funziona più, ora serve solo la pagina di accesso, con un messaggio che dice need to log in to continue
, anche utilizzando HTTP 200 OK (vergogna per loro), si aggiornerà se scopro perché ( @XavierStuvw afferma che si tratta di problemi di sicurezza correlati)
ho trovato un modo molto più semplice per farlo rispetto alla risposta di @tvl,
crea prima un token di accesso con accesso API qui:https://gitlab.com/profile/personal_access_tokens , quindi esegui:
wget --header 'PRIVATE-TOKEN: <token>' 'https://gitlab.com/<username>/<repo>/raw/master/path/to/file.ext'
ho trovato la soluzione qui.
Con il prezioso aiuto di Chris, ecco come puoi eseguire uno script (file drupal .make nel mio caso) da un server GitLab. (Probabilmente funziona per GitHub ma non l'ho testato. Forse la sintassi sarà leggermente diversa). (Ovviamente questo funziona per qualsiasi tipo di script)
Può essere fatto usando i token di autenticazione. Ecco la documentazione dell'API di GitLab e qui c'è l'API di GitHub
Per comodità userò https://gitlab.com come server di esempio.
-
Vai su https://gitlab.com/profile/account e trova il tuo "token privato"
-
Quindi stampa l'elenco dei progetti e trova l'id del tuo progetto che stai cercando
curl https://gitlab.com/api/v3/projects?private_token=<your_private_token>
o vai lì con il tuo browser (un visualizzatore json ti aiuterà molto)
-
Quindi stampa l'elenco dei file presenti in questo progetto e trova l'id del file che stai cercando
curl https://gitlab.com/api/v3/projects/<project_id>/repository/tree?private_token=<your_private_token>
-
Finalmente scarica/esegui il file!
curl https://gitlab.com/api/v3/projects/<project_id>/repository/raw_blobs/<file_id>?private_token=<your_private_token>
Nel caso in cui desideri eseguire lo script (drupal .make)
drush make https://gitlab.com/api/v3/projects/<project_id>/repository/raw_blobs/<file_id>?private_token=<your_private_token> <drupal_folder>
(Se stai cercando un flusso di lavoro per integrare GitLab con le piattaforme Aegir .make senza usare token (forse SSH?) crea un thread e incolla qui il link.)
MODIFICA
Puoi ottenere il file senza project_id
utilizzando il encoded Nome del progetto. Ad esempio il my-user-name/my-project
diventerà:my-user-name%2Fmy-project