Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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使う

https://developer.nulab-inc.com/ja/docs/backlog/api/2/add-project-user/

参考にさせて頂いたgitlab APIのリファレンス

プロジェクトAPI

https://docs.gitlab.com/ce/api/projects.html#list-user-projects

グループAPI

https://docs.gitlab.com/ee/api/groups.html

matsuyoro
げーむくりえいたー。 顔は濃いが存在の薄さに悩んでいる。 書籍「仕事はたのしいかね」の、大きな事でも試してみればの精神に感銘を受けている。 好きな言葉:好きこそものの上手なれ / 楽は苦の種、苦は楽の種
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした