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
asMaintainer
.
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?