2017-06-15

コマンドラインからgitlabのファイルをダウンロードする

gitlabで wgetやcurlを使ってprivateなリポジトリのファイルをダウンロードしたいときの備忘録。

まずprivate_tokenという値が必要になります。これは[Account]画面から取得できますが、以下のようにcurlを叩くことによって取得することもできます。

$ curl -sL {gitlab_host_url}/api/v3/session --data 'login={user_id}&password={password}'

ユーザ情報がJSONで返ってくるので、jqやsedで処理してprivate_tokenを取得します。

{
  "name": "{name}",
  "username": "{username}",
  "id": 1,
  "state": "active",
  "avatar_url": "xxxxx",
  "is_admin": false,
  "bio": "",
  "skype": "",
  "linkedin": "",
  "twitter": "",
  "website_url": "",
  "email": "{email}",
  "theme_id": 2,
  "color_scheme_id": 1,
  "projects_limit": 10,
  "can_create_group": false,
  "can_create_project": true,
  "private_token": "{private_token}"
}

jqだとこんな感じ↓

$ curl -sL {gitlab_host_url}/api/v3/session --data 'login={user_id}&password={password}' | \
  jq -r .private_token

sedだとこんな感じ↓

$ curl -sL {gitlab_host_url}/api/v3/session --data 'login={user_id}&password={password}' | \
  sed 's/.*private_token":"\(.*\)".*/\1/g'

あとはprivate_tokenでrawファイルを取得すればOK

$ curl {gitlab_host_url}/{user_or_project}/{repository}/raw/master/{file_path}?private_token={private_token}

参考URL

このエントリーをはてなブックマークに追加