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}