Group Deploy Keys - API

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

Problem to solve

Once backend work is done as part of #14729 (closed), we have all we need to develop new API endpoints for group deploy keys.

The Group Deploy Keys API will sit along side of the existing Deploy Keys API. It will allow all (CRUD) operations available on that existing API + the "Enabling key" operation (Adding deploy keys to multiple projects won't be made available, as it's out of context at group level).

documentation will be created accordingly.

Intended users

User experience goal

Following the created documentation, users should be able to perform CRUD operations on Group Deploy Keys vi API.

cc @ogolowinski @dimitrieh

Proposed endpoints

  • List group deploy keys: GET /groups/:id/group_deploy_keys
  • Single group deploy key: GET /groups/:id/group_deploy_keys/:key_id
  • Add group deploy key: POST /groups/:id/group_deploy_keys
  • Update group deploy key: PUT /groups/:id/group_deploy_keys/:key_id
  • Delete group deploy key: DELETE /groups/:id/group_deploy_keys/:key_id
  • Enable group deploy key: POST /groups/:id/group_deploy_keys/:key_id/enable

Technical background

  • For performance reasons, the keys table could not be reused for group deploy keys. So as part of #215160 (closed), a new group_deploy_keys table with an almost-similar structure as keys was created.
  • As part of the same issue, a group_deploy_keys_groups intermediate table between groups and group_deploy_keys tables was created. It'll be used to save which group deploy key is enabled for a given group, and whether it has write-access to it.
  • Other backend considerations (addition of a model, serializers, policies) were added as part of this MR.

With all of the above set up, the development of the Group Deploy Keys API should be ready to go. In addition to creating the endpoints listed above, the backend piece to add is to extend a group deploy key permission from a given group onto all children projects of this group.

Permissions and Security

Documentation

Availability & Testing

What does success look like, and how can we measure that?

What is the type of buyer?

Is this a cross-stage feature?

Links / references

This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.

Edited by 🤖 GitLab Bot 🤖