Skip to content

Sync delivery team members across instances

When a new team member joins the team, we have to set several group memberships across multiple instances.

Issues like gitlab-org/release/tasks#2465 (closed) have the following task

Trainer: Add user to group gitlab-com/delivery as Maintainer.

This task is a bit confusing.

We have 3 groups:

  • production => gitlab-org/delivery
  • ops => gitlab-com/delivery
  • dev => gitlab/delivery

In that specific case, Graeme was already a member of the production group, but not a member of the ops and dev groups.

Release tools already handle the release-managers rotation moving team members into the appropriate groups, it can definitely handle the team groups as well.

 TEST=1 bundle exec rake 'release_managers:sync'
2021-05-17 11:39:02.557076 I [dry-run] ReleaseTools::ReleaseManagers::Client -- Syncing membership -- {:target=>:dev}
2021-05-17 11:39:03.420497 I [dry-run] ReleaseTools::ReleaseManagers::Client -- Adding user to group -- {:user=>"ggillies", :group=>"gitlab/delivery"}
2021-05-17 11:39:03.420678 I [dry-run] ReleaseTools::ReleaseManagers::Client -- Syncing membership -- {:target=>:production}
2021-05-17 11:39:04.037466 I [dry-run] ReleaseTools::ReleaseManagers::Client -- Adding user to group -- {:user=>"jarv", :group=>"gitlab-org/delivery"}
2021-05-17 11:39:04.385617 I [dry-run] ReleaseTools::ReleaseManagers::Client -- Adding user to group -- {:user=>"yorickpeterse", :group=>"gitlab-org/delivery"}
2021-05-17 11:39:04.385782 I [dry-run] ReleaseTools::ReleaseManagers::Client -- Syncing membership -- {:target=>:ops}
2021-05-17 11:39:05.206999 I [dry-run] ReleaseTools::ReleaseManagers::Client -- Adding user to group -- {:user=>"ggillies", :group=>"gitlab-com/delivery"}
2021-05-17 11:39:06.768605 I [dry-run] ReleaseTools::ReleaseManagers::SlackWrapperClient -- Syncing membership -- {:user_ids=>["U68SX6FCH", "UDRUSRCS0", "UBQ8BPT1B"], :url=>"[REACTED]"}
2021-05-17 11:39:07.122344 I [dry-run] ReleaseTools::ReleaseManagers::Client -- Syncing membership -- {:target=>:dev}
2021-05-17 11:39:07.583700 I [dry-run] ReleaseTools::ReleaseManagers::Client -- Syncing membership -- {:target=>:production}
2021-05-17 11:39:08.077082 I [dry-run] ReleaseTools::ReleaseManagers::Client -- Syncing membership -- {:target=>:ops}

The above dry-run output shows us that we have a hard time handling this, because @ggillies is a member of the production team, but not a member of the ops and dev groups. And both @jarv and @yorickpeterse have been removed from the production team, but not from the teams on ops and dev.

I suggest we merge this new feature and let CI handle this. @amyphillips WDYT?

Merge request reports