GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Öffnen Sie eine Datei direkt aus einem privaten GitLab-Repository

Wenn Sie auf eine Datei von privatem GitLab zugreifen möchten, können Sie den folgenden Ansatz verwenden, der bei mir funktioniert hat:)

Erstellen Sie die URL:

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

  • url ist Ihre Gitlab-URL, z. B.:git.lab.com.
  • /api/v4/projects ist eine Konstante.
  • Projekt-ID ist die projectId deines Projekts, die du unter dem Namen deines Projekts in gitlab finden kannst.
  • /repository/files ist wieder eine Konstante.
  • Dateiname ist der Name der Datei, z. B.:sagar.txt
  • /raw?ref= ist eine Konstante und der Wert von ref kann master oder ein beliebiger Zweig sein, aus dem Sie die Datei nehmen möchten. Ich rufe die Datei vom Master ab.
  • Generated_private_token aus gitlab generiert werden soll, befolgen Sie bitte die Schritte unter dem Link :Generate Private Token

Aktualisierung vom 25.12.2018:

Solange Sie keine riesigen Dateien herunterladen, sollte dies funktionieren:

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

, ein reales Beispiel, das Herunterladen der Datei /README.md aus dem privaten Repository https://gitlab.com/divinity76/Yur17 , wobei die Web-Download-URL https://gitlab.com/divinity76/Yur17/raw/master/README.md?inline=false ist , ist:

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

Beachten Sie besonders, wie die gitlab_username/repo_name war URL-kodiert, zB / wurde zu %2F (Sie können überprüfen, wie Ihr Benutzername und Repo-Name als URL-codiert ist, indem Sie das Javascript-Terminal Ihres Browsers öffnen und encodeURIComponent("your_username/repo_name"); eingeben im Terminal und drücken Sie die Eingabetaste.)

Danke an Jonathan Hall @ gitlab unter mg.gitlab.com und https://docs.gitlab.com/ee/api/repository_files.html und tvl für die Unterstützung beim Erreichen einer Lösung.

Update 11.12.2018:Diese Methode funktioniert nicht mehr, jetzt bedient sie nur noch die Anmeldeseite mit der Meldung need to log in to continue , auch wenn HTTP 200 OK verwendet wird (Schande über sie), wird aktualisiert, wenn ich herausfinde, warum ( @XavierStuvw behauptet, dass es sich um Sicherheitsbedenken handelt)

Ich habe einen viel einfacheren Weg gefunden als die Antwort von @tvl,

Erstellen Sie zuerst ein Zugriffstoken mit API-Zugriff hier:https://gitlab.com/profile/personal_access_tokens , dann tun Sie:

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

Ich habe die Lösung hier gefunden.


Mit der wertvollen Hilfe von Chris erfahren Sie hier, wie Sie ein Skript (in meinem Fall eine drupal .make-Datei) von einem GitLab-Server ausführen können. (Wahrscheinlich funktioniert es für GitHub, aber ich habe es nicht getestet. Vielleicht ist die Syntax etwas anders). (Natürlich funktioniert das für jede Art von Skript)

Dies kann mit den Authentifizierungstoken erfolgen. Hier ist die Dokumentation der API von GitLab und hier ist die API von GitHub

Der Einfachheit halber werde ich https://gitlab.com als Beispielserver verwenden.

  • Gehen Sie zu https://gitlab.com/profile/account und suchen Sie Ihr „Privates Token“

  • Drucken Sie dann die Liste der Projekte aus und finden Sie die ID Ihres gesuchten Projekts

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

    oder gehen Sie mit Ihrem Browser dorthin (ein json-Viewer wird sehr helfen)

  • Drucken Sie dann die Liste der Dateien aus, die sich in diesem Projekt befinden, und finden Sie die ID Ihrer Datei, nach der Sie suchen

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

  • Holen Sie sich endlich die Datei / führen Sie sie aus!

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

Falls Sie das Skript ausführen möchten (drupal .make)

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

(Wenn Sie hier nach einem Workflow suchen, um GitLab mit Aegir .make-Plattformen zu integrieren, ohne Token zu verwenden (vielleicht SSH?), erstellen Sie bitte einen Thread und fügen Sie den Link hier ein.)

BEARBEITEN

Sie können die Datei auch ohne den project_id erhalten durch Verwendung der kodierten Projektname. Zum Beispiel die my-user-name/my-project wird zu:my-user-name%2Fmy-project


Linux
  1. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  2. Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

  3. Warum andere Dinge als /home auf eine separate Partition legen?

  4. echo oder print /dev/stdin /dev/stdout /dev/stderr

  5. Warum sind < oder > erforderlich, um /dev/tcp

Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0?

Bash =~ Regex und Https://regex101.com/?

Auf welchen Systemen unterscheidet sich //foo/bar von /foo/bar?

Kubuntu zeigt Fehler beim Login (file:///usr/share/sddm//themes/breeze/main.qml:no Such File or Directory)?

Ubuntu 14.04 „erhielt keinen Wiedergabe-URI bei der Eingabedatei:///*“?

Die Dateien /proc/mounts, /etc/mtab und /proc/partitions verstehen