動かざることバグの如し

近づきたいよ 君の理想に

Gitlab APIを使って一括でユーザー全員を特定のグループに所属させる

環境

  • Gitlab 11

背景

全員が使えるプロジェクトが作れるグループがほしかった。

しかしGitlabの仕様上、グループ自体の権限を「internal」または「private」にしても、全員が閲覧プロジェクトにはなるが、結局そのグループに所属していないとそのグループ上に新規にプロジェクトを作成したりMasterにマージ等ができない

つまり、何でもありのオープンワールド的なグループを作るには全員をそのグループのメンテナーとして追加するしかない。

人数的に画面上で追加していくのはツラみがあったのでAPI経由でできないか試してみた。

前準備

GitlabのAPIのアクセスにはプライベートトークンというのが必要である。これは管理画面のプロフィールから取得できる。

手順

まずはGitlabに登録されている既存のユーザーのID一覧を取得する active=trueで停止されたユーザーは除外される

curl -H "Private-Token: xxx" https://gitlab.example.com/api/v4/users?active=true

次に追加したいグループのIDを調べるためにグループ一覧を取得

curl -H "Private-Token: xxxx" https://gitlab.example.com/api/v4/groups

最後に/groups/:id/members で追加 以下は一例

curl -X POST --header 'Private-Token: xxxx' --data 'user_id=17&access_level=40' https://gitlab.example.com/api/v4/groups/52/members