Trying to open CI/CD settings on `gitlab` project fails with 500
Summary
Originally discussed in slack, we can no longer access the CI/CD settings in the gitlab project, but some other projects work fine. @mbobin and @jivanvl tracked it down to a commit in !52051 (merged), they believe.
Steps to reproduce
Copying @mbobin's reproduction details from: !53061 (merged), (reverting the change but not verified in production yet):
This merge request broke the
/-/settings/ci_cdpage when there are Pipeline subscriptions defined with projects that are owned by groups: https://docs.gitlab.com/ee/ci/multi_project_pipelines.html#trigger-a-pipeline-when-an-upstream-project-is-rebuilt
- Create namespace
AandB, each with it's own project:CandD- Go to
/A/C/-/settings/ci_cd- Expand
Pipeline subscriptions- Add
B/Das a subscription and press the subscribe button.undefined method 'blocked?' for #<Group id:192>error should appear.
Example Project
What is the current bug behavior?
What is the expected correct behavior?
Relevant logs and/or screenshots
Output of checks
Results of GitLab environment info
Expand for output related to GitLab environment info
(For installations with omnibus-gitlab package run and paste the output of: `sudo gitlab-rake gitlab:env:info`) (For installations from source run and paste the output of: `sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production`)
Results of GitLab application Check
Expand for output related to the GitLab application check
(For installations with omnibus-gitlab package run and paste the output of:
sudo gitlab-rake gitlab:check SANITIZE=true)(For installations from source run and paste the output of:
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production SANITIZE=true)(we will only investigate if the tests are passing)
Possible fixes
The problem is in ee/app/views/projects/settings/subscriptions/_project.html.haml#L6 where we call user_avatar_without_link(user: project.owner, size: 32), because project.owner can be a group, not only a user.
In this example, templates is a group. I think we should replace user_avatar_without_link with a version of group_icon when project.owner is a group:
diff --git a/ee/app/views/projects/settings/subscriptions/_project.html.haml b/ee/app/views/projects/settings/subscriptions/_project.html.haml
index e8e450d8930..01c74b89d27 100644
--- a/ee/app/views/projects/settings/subscriptions/_project.html.haml
+++ b/ee/app/views/projects/settings/subscriptions/_project.html.haml
@@ -3,7 +3,7 @@
%td
= project.name
%td
- = user_avatar_without_link(user: project.owner, size: 32)
+ = group_icon(project.owner)
= project.owner.name
%td.gl-text-right
= link_to project_subscription_path(@project, subscription.id), method: :delete, data: { toggle: 'tooltip', title: tooltip, container: 'body', testid: 'delete-subscription' }, class: "gl-button btn btn-danger" do

