GNU/Linux >> Znalost Linux >  >> Linux

Otevřete soubor přímo ze soukromého úložiště GitLab

Pokud byste chtěli získat přístup k souboru ze soukromého GitLabu, můžete použít níže uvedený přístup, který pro mě fungoval:)

Sestavte adresu URL:

https://url/api/v4/projects/projectId/repository/files/fileName/raw?ref=master&private_token=Generated_private_token

  • url je vaše adresa URL Gitlabu, např.:git.lab.com.
  • /api/v4/projects je konstanta.
  • ID projektu je projectId vašeho projektu, které můžete najít pod názvem vašeho projektu v gitlabu.
  • /repository/files je opět konstanta.
  • název souboru je název souboru např.:sagar.txt
  • /raw?ref= je konstanta a hodnota ref může být master nebo jakákoliv větev, ze které chcete soubor převzít. Načítám soubor z Master.
  • Generated_private_token by měl být vygenerován z gitlabu, postupujte prosím podle kroků uvedených v odkazu:Generovat soukromý token

Aktualizace 25. 12. 2018:

pokud nestahujete velké soubory, mělo by to fungovat:

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>"

, reálný příklad, stažení souboru /README.md ze soukromého úložiště https://gitlab.com/divinity76/Yur17 , kde adresa URL stahování z webu je https://gitlab.com/divinity76/Yur17/raw/master/README.md?inline=false , je:

curl -s -H "Private-Token: afF2s1xgk6xcwXHy3J4C" "https://gitlab.com/api/v4/projects/divinity76%2Fyur17/repository/files/README%2Emd/raw?ref=master"

věnujte zvláštní pozornost tomu, jak gitlab_username/repo_name byla zakódována adresa URL, např. / se stal %2F (můžete zkontrolovat, jak je vaše uživatelské jméno a repo název zakódované v adrese URL, když otevřete javascriptový terminál prohlížeče a napište encodeURIComponent("your_username/repo_name"); v terminálu a stiskněte enter.)

díky Jonathan Hall @gitlab na adrese mg.gitlab.com a https://docs.gitlab.com/ee/api/repository_files.html a tvl za pomoc při hledání řešení.

Aktualizace 2018-12-11:tato metoda již nefunguje, nyní zobrazuje pouze přihlašovací stránku se zprávou need to log in to continue , dokonce i pomocí HTTP 200 OK (hanba za ně), se aktualizuje, pokud zjistím proč ( @XavierStuvw tvrdí, že to souvisí s bezpečnostními obavami)

Našel jsem mnohem jednodušší způsob, jak to udělat, než odpověď @tvl,

nejprve vytvořte přístupový token s přístupem k rozhraní API zde:https://gitlab.com/profile/personal_access_tokens, pak proveďte:

wget --header 'PRIVATE-TOKEN: <token>' 'https://gitlab.com/<username>/<repo>/raw/master/path/to/file.ext'

řešení jsem našel zde.


S Chrisovou cennou pomocí zde je návod, jak můžete spustit skript (v mém případě soubor drupal .make) ze serveru GitLab. (Pravděpodobně to funguje pro GitHub, ale netestoval jsem to. Možná bude syntaxe trochu jiná). (To samozřejmě funguje pro jakýkoli typ skriptu)

To lze provést pomocí autentizačních tokenů. Zde je dokumentace API GitLab a zde je API GitHubu

Pro usnadnění použiji jako ukázkový server https://gitlab.com.

  • Přejděte na https://gitlab.com/profile/account a najděte svůj „Soukromý token“

  • Poté vytiskněte seznam projektů a najděte id svého projektu, který hledáte

    curl https://gitlab.com/api/v3/projects?private_token=<your_private_token>

    nebo tam přejděte pomocí prohlížeče (velmi pomůže prohlížeč json)

  • Poté vytiskněte seznam souborů, které jsou v tomto projektu, a najděte id svého souboru, který hledáte

    curl https://gitlab.com/api/v3/projects/<project_id>/repository/tree?private_token=<your_private_token>

  • Konečně získejte / spusťte soubor!

    curl https://gitlab.com/api/v3/projects/<project_id>/repository/raw_blobs/<file_id>?private_token=<your_private_token>

V případě, že chcete spustit skript (drupal .make)

drush make https://gitlab.com/api/v3/projects/<project_id>/repository/raw_blobs/<file_id>?private_token=<your_private_token> <drupal_folder>

(Pokud zde hledáte pracovní postup pro integraci GitLab s platformami Aegir .make bez použití tokenů (možná SSH?), vytvořte vlákno a vložte sem odkaz.)

UPRAVIT

Soubor můžete získat bez project_id pomocí kódovaného název projektu. Například my-user-name/my-project bude:my-user-name%2Fmy-project


Linux
  1. Použijte úložiště git na /var/www/html/

  2. Django static_root v /var/www/... - žádná oprávnění ke collectstatic

  3. Kdy mám použít /dev/shm/ a kdy /tmp/?

  1. Jak zjistit, ze které složky běží proces?

  2. echo nebo print /dev/stdin /dev/stdout /dev/stderr

  3. Proč jsou < nebo > vyžadovány pro použití /dev/tcp

  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Bash =~ Regex A Https://regex101.com/?

  3. Ubuntu 14.04 „nedošlo k přehrávání Uri na vstupním souboru:///*“?