GNU/Linux >> Linux Esercitazione >  >> Linux

Apri un file direttamente da un repository privato GitLab

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


Linux
  1. Ubuntu 14.04 "non ha ricevuto un file Uri di riproduzione in entrata::///*"?

  2. CentOS / RHEL:come recuperare dal file /etc/passwd cancellato

  3. Installa i binari in /bin, /sbin, /usr/bin e /usr/sbin, interazioni con --prefix e DESTDIR

  4. Usa un repository git su /var/www/html/

  5. Django static_root in /var/www/... - nessuna autorizzazione a collectstatic

Su quali sistemi //foo/bar è diverso da /foo/bar?

Kubuntu mostra un errore all'accesso (file:///usr/share/sddm//themes/breeze/main.qml:no Such File Or Directory)?

Comprendere i file /proc/mounts, /etc/mtab e /proc/partitions

unix:///var/run/supervisor.sock nessun file di questo tipo

/sys/ documentazione?

I siti web dovrebbero vivere in /var/ o /usr/ in base all'utilizzo consigliato?