環境
- 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