LoginSignup
17
11

More than 5 years have passed since last update.

Gitlabへ移行した際の、使えるAPI(v4)メモ

Last updated at Posted at 2018-10-15

backlogからgitlabへ移行する事があったので、
つかえそうなAPIをつらつらメモっていきます。
プロジェクト150個近くある、、リポジトリは200個近く。。長い道のり(泣)

jq コマンドをインストールしておくと、curlコマンドで帰ってきたjsonを見やすく整形できるのでおすすめ。macならサクッとインストール!

$ brew install jq

まず、アクセストークンを用意しておく、gitlabにログインし、 自分のアイコン > 設定 > アクセストークンから生成すると取得できる。

image.png

移行に使った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

17
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
11