GitLabサーバーにプライベートリポジトリがあり、SSHを使用して、git cloneを使用してプロジェクトをプルできます。
しかし、サーバーから直接Linuxコマンドラインでスクリプトを実行したいと思います(具体的には、Drupal/Drush .makeファイル)
私は生のファイルを使用してそれを実行しようとしました:
drush make http://server.com/user/project/raw/master/file.make
(Drupalユーザーが言っておくと便利です)
curl http://server.com/user/project/raw/master/file.make
成功なし。もちろん、それは私にログインページを返します。
出来ますか?
Chris の役立つヘルプを使用して、GitLabサーバーからスクリプト(私の場合は、Drupal .makeファイル)を実行する方法を示します。 (おそらくGitHubで動作しますが、テストしていません。構文が少し異なるかもしれません)。 (もちろん、これはどのタイプのスクリプトでも機能します)
これは、認証トークンを使用して行うことができます。 これはGitLabのAPIのドキュメントです および ここはGitHubのAPIです
便宜上、サンプルサーバーとして https://gitlab.com を使用します。
https://gitlab.com/profile/account に移動し、「プライベートトークン」を見つけます
次に、プロジェクトのリストを印刷して、探しているプロジェクトのIDを見つけます。
curl https://gitlab.com/api/v3/projects?private_token=<your_private_token>
またはあなたのブラウザでそこに行きます( jsonビューア は大いに役立ちます)
次に、このプロジェクトにあるファイルのリストを印刷し、探しているファイルのIDを見つけます
curl https://gitlab.com/api/v3/projects/<project_id>/repository/tree?private_token=<your_private_token>
最後にファイルを取得/実行します!
curl https://gitlab.com/api/v3/projects/<project_id>/repository/raw_blobs/<file_id>?private_token=<your_private_token>
スクリプトを実行する場合(drupal .make)
drush make https://gitlab.com/api/v3/projects/<project_id>/repository/raw_blobs/<file_id>?private_token=<your_private_token> <drupal_folder>
(ここで、GitLabをトークン(おそらくSSH?)を使用せずにAegir .makeプラットフォームと統合するワークフローを探している場合は、スレッドを作成して、ここにリンクを貼り付けてください。
[〜#〜]編集[〜#〜]
encodedプロジェクト名を使用すると、project_id
なしでファイルを取得できます。たとえば、my-user-name/my-project
は次のようになります:my-user-name%2Fmy-project
2018-12-25の更新:
巨大なファイルをダウンロードしない限り、これはうまくいくはずです:
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>"
実際の例では、ファイル/README.md
をプライベートリポジトリhttps://gitlab.com/divinity76/Yur17
からダウンロードします。ここで、WebダウンロードURLは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"
gitlab_username/repo_name
がどのようにURLエンコードされたかに特に注意してください。たとえば、/
が%2F
になった(ブラウザのJavaScript端末を開いて、ターミナルにencodeURIComponent("your_username/repo_name");
と書き込んで、ユーザー名とリポジトリ名がURLエンコードされていることを確認できます。 Enterキーを押します。)
Jonathan Hall
@ mg.gitlab.comのgitlab、および https://docs.gitlab.com/ee/api/repository_files.html と tvl へのリーチの支援に感謝解決策。
2018-12-11の更新:このメソッドは機能しなくなり、現在はログインページを提供するだけです。HTTP200 OK(それらの恥)を使用していても、need to log in to continue
というメッセージが表示され、理由が判明すると更新されます(@XavierStuvwがセキュリティ上の懸念)
@tvlの答えよりもはるかに簡単な方法を見つけました、
最初に、ここでAPIアクセスを持つアクセストークンを作成します。 https://gitlab.com/profile/personal_access_tokens 、次に次のようにします。
wget --header 'PRIVATE-TOKEN: <token>' 'https://gitlab.com/<username>/<repo>/raw/master/path/to/file.ext'
私は解決策を見つけました here。
プライベートGitLabからファイルにアクセスする場合は、以下の方法を使用できます。
URLを作成します: