GNU/Linux >> Linux の 問題 >  >> Linux

GitLab プライベート リポジトリからファイルを直接開く

プライベート GitLab からファイルにアクセスしたい場合は、以下のアプローチを使用できます:)

URL を作成する:

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

  • url は Gitlab の URL です (例:git.lab.com.)。
  • /api/v4/projects は定数です。
  • プロジェクト ID は、プロジェクトの projectId です。これは、gitlab のプロジェクト名の下にあります。
  • /リポジトリ/ファイル は再び定数です。
  • ファイル名 ファイルの名前です。例:sagar.txt
  • /raw?ref= は定数であり、ref の値は master またはファイルを取得する任意のブランチにすることができます。マスターからファイルを取得しています。
  • Generated_private_token gitlab から生成する必要があります。リンクに記載されている手順に従ってください:プライベート トークンの生成

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 日の更新:このメソッドは機能しなくなりました。ログイン ページを表示するだけで、need to log in to continue というメッセージが表示されます。 、HTTP 200 OK を使用していても (恥を知れ)、理由がわかれば更新されます (@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'

ここで解決策を見つけました。


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>

(トークン (おそらく SSH) を使用せずに GitLab を Aegir .make プラットフォームと統合するワークフローを探している場合は、スレッドを作成して、ここにリンクを貼り付けてください。)

編集

project_id なしでファイルを取得できます エンコードされた プロジェクト名。たとえば、my-user-name/my-project になります:my-user-name%2Fmy-project


Linux
  1. /var/www/html/ で git リポジトリを使用する

  2. /dev/shm/ と /tmp/ はいつ使用する必要がありますか?

  3. プロセスが実行されているフォルダーを見つける方法は?

  1. /sys/ ドキュメント?

  2. echo または print /dev/stdin /dev/stdout /dev/stderr

  3. /dev/tcp を使用するために < または > が必要な理由

  1. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  2. Bash =〜正規表現とHttps://regex101.com/?

  3. Ubuntu 14.04「エントリーファイルで再生Uriを取得しませんでした:/// *」?