backlogからgitlabへ移行する事があったので、
つかえそうなAPIをつらつらメモっていきます。
プロジェクト150個近くある、、リポジトリは200個近く。。長い道のり(泣)
jq コマンドをインストールしておくと、curlコマンドで帰ってきたjsonを見やすく整形できるのでおすすめ。macならサクッとインストール!
$ brew install jq
まず、アクセストークンを用意しておく、gitlabにログインし、 自分のアイコン > 設定 > アクセストークンから生成すると取得できる。
移行に使ったAPI群
ユーザー(個人)での扱い
プロジェクト一覧取得
〜Private-Token: ***********〜
に管理画面からコピーしたアクセストークンを入れる
curl --header "Private-Token: ***********" "https://gitlab.com/api/v4/users/hogeproject/projects?visibility=private" | jq .
?visibility=private
はプライベートリポジトリ
ユーザー 一覧取得
curl --header "Private-Token: ***********" "https://gitlab.com/api/v4/users" | jq .
これだと公開されているユーザー全部取得できてしまうようなので、自分のusernameから取得する場合は、
usernameからユーザー情報取得
$ curl --header "Private-Token: ********" "https://gitlab.com/api/v4/users?username=hogehogesan" | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 227 100 227 0 0 335 0 --:--:-- --:--:-- --:--:-- 334
[
{
"id": 296*****,
"name": "********",
"username": "*******",
"state": "active",
"avatar_url": "https://secure.gravatar.com/avatar/2b4b64496c301cc124de57d74a228e38?s=80&d=identicon",
"web_url": "https://gitlab.com/hogehogesan":q
}
]
自分のプロジェクトを作成する
curl --header "PRIVATE-TOKEN: ***********" -X POST "https://gitlab.com/api/v4/projects?name=hogeproject&visibility=private"
jsonフォーマットで指定したい場合
curl -X POST -H "Content-Type: application/json" -d '{"name":"hogeproject", "visibility":"private"}' --header "Private-Token: **********" "https://gitlab.com/api/v4/projects"
グループ(チーム)での扱い
指定グループのプロジェクト一覧取得
curl --header "Private-Token: ***********" "https://gitlab.com/api/v4/groups/hogeteamproject/projects?visibility=private" | jq .
アクセスできるグループの情報取得
$ curl --header "Private-Token: **********" "https://gitlab.com/api/v4/groups" | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 386 100 386 0 0 555 0 --:--:-- --:--:-- --:--:-- 555
[
{
"id": 3784278,
"web_url": "https://gitlab.com/groups/******",
"name": "*******",
"path": "*******",
"description": "*******",
"visibility": "private",
"lfs_enabled": true,
"avatar_url": null,
"request_access_enabled": false,
"full_name": "*******",
"full_path": "*******",
"parent_id": null,
"ldap_cn": null,
"ldap_access": null
}
]
指定のグループ内にプロジェクトを作成する
curl --header "PRIVATE-TOKEN: ***********" -X POST "https://gitlab.com/api/v4/projects?name=groupproject&visibility=private&namespace_id=3784278"
&namespace_id=3784278
は、
グループのIDを指定。。。この指定方法探すのに一苦労しました。
このidは、グループ内のプロジェクト一覧を取得した際に表示されるidを使います。
(危険扱い注意!)指定のグループ内のプロジェクトを削除
curl --header "PRIVATE-TOKEN: ***********" -X DELETE "https://gitlab.com/api/v4/projects/8828971?namespace_id=3784278"
8828971
は指定のプロジェクトID。サクッと消えるので注意!
TIPS
ユーザー指定なのか、グループ指定なのか
グループだと
〜/groups/fugafugateam〜
ユーザーだと
〜/users/hogehogekun〜
gitlabはリポジトリ=プロジェクト
なので、backlogで1プロジェクトに複数リポジトリを作っている場合は、
gitlab上で、プロジェクト分けて作るのか、グループで分けるのか、など工夫する必要がある。
プロジェクトのユーザーに追加しないとプロジェクトの操作できないので、このAPI使う
参考にさせて頂いたgitlab APIのリファレンス
プロジェクトAPI
グループAPI