it-swarm.com.de

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

Ich habe ein privates Repository auf einem GitLab-Server und kann mithilfe von SSH ein Projekt mit git clone erstellen.

Ich möchte jedoch ein Skript auf der Linux-Befehlszeile direkt vom Server ausführen (genauer gesagt, eine Drupal/Drush-.make-Datei).

Ich habe versucht, es mit der RAW-Datei auszuführen:

drush make http://server.com/user/project/raw/master/file.make

(Für Nicht-Drupal-Nutzer sagen wir mal)

curl http://server.com/user/project/raw/master/file.make

Ohne Erfolg. Natürlich gibt es mir die Anmeldeseite zurück.

Ist es möglich?

15
tvl

Mit der wertvollen Hilfe von Chris können Sie ein Skript (in meinem Fall Drupal .make-Datei) von einem GitLab-Server ausführen. (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 mithilfe der Authentifizierungstoken erfolgen. Hier ist die Dokumentation der GitLab-API und hier ist die GitHub-API

Praktischerweise verwende ich den https://gitlab.com als Beispielserver.

  • Gehen Sie zu https://gitlab.com/profile/account und finden Sie Ihr "Privates Token"

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

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

    oder geh mit deinem browser dorthin (ein json viewer wird dir sehr helfen)

  • Drucken Sie dann die Liste der Dateien aus, die sich in diesem Projekt befinden, und suchen 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>

  • Endlich die Datei holen/ausführen!

    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 in Aegir .make-Plattformen zu integrieren, ohne Token zu verwenden (möglicherweise SSH?), Erstellen Sie bitte einen Thread und fügen Sie hier den Link ein.)

EDIT

Sie können die Datei ohne den project_id abrufen, indem Sie den Projektnamen codiert verwenden. Zum Beispiel wird der my-user-name/my-project zu: my-user-name%2Fmy-project

24
tvl

Update 25.12.2018:

solange Sie keine großen 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 für das Herunterladen der Datei /README.md aus dem privaten Repository https://gitlab.com/divinity76/Yur17 mit der Web-Download-URL https://gitlab.com/divinity76/Yur17/raw/master/README.md?inline=false lautet:

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

beachten Sie insbesondere, wie der gitlab_username/repo_name url-codiert wurde, z. B. / wurde zu %2F (Sie können überprüfen, ob Ihr Benutzername und Ihr Repo-Name url-codiert sind, indem Sie Ihr Javascript-Terminal öffnen und encodeURIComponent("your_username/repo_name"); in das Terminal schreiben und die Eingabetaste drücken.)

dank 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 bei der Suche nach einer Lösung.



Update 2018-12-11: Diese Methode funktioniert nicht mehr, jetzt dient sie nur noch der Anmeldeseite, mit der Meldung need to log in to continue, auch wenn HTTP 200 verwendet wird. OK (Schande), wird aktualisiert, wenn ich herausfinde, warum (@XavierStuvw behauptet, dass es so ist) Sicherheitsbedenken im Zusammenhang)



ich habe einen viel einfacheren Weg gefunden, das zu tun, als @tvls Antwort.

erstellen Sie zunächst ein Zugriffstoken mit API-Zugriff hier: https://gitlab.com/profile/personal_access_tokens , und führen Sie dann Folgendes aus:

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

ich habe die Lösung gefunden hier.

8
hanshenrik

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

URL erstellen:

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


  • uRL ist Ihre Gitlab-URL, zB: git.lab.com.
  • /api/v4/projects ist eine Konstante.
  • projectId ist die projectId Ihres Projekts, die Sie unter dem Namen Ihres Projekts in gitlab finden.
  • /repository/files ist wieder eine Konstante.
  • Dateiname ist der Name der Datei, zB: sagar.txt
  • /raw? ref = ist eine Konstante und der Wert von ref kann master oder ein beliebiger Zweig sein, aus dem Sie die Datei entnehmen möchten. Ich rufe die Datei vom Master ab.
  • Generated_private_token sollte aus gitlab generiert werden, folge bitte den Schritten in dem Link: Generate Private Token
0
Sagar Shetty