Upcoming milestone is confusing when projects have different milestones
The GitLab Workflow section of the handbook links to issues in the magic 'upcoming' milestone (#14102 (closed)) across the gitlab-org group.
This is implemented by looking at the group and finding the milestone in any project in that group with the soonest due date: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/3148/diffs
This doesn't work well for the handbook case, because the gitlab-org group has (at least) two sets of milestones on different schedules: the mainline release milestones (as in GitLab CE, where the next milestone is 8.8 and due on 22 May) and the GitLab Runner milestones (where the next milestone is v1.2 and due on 9 May). This means that a search for the upcoming milestone across the gitlab-org group only returns results from GitLab Runner, until after 9 May, when it will start showing GitLab CE, EE, etc. again. But it's actually even more confusing than that, because it uses the title of the milestone: so if GitLab CE had a v1.2 milestone, it would show issues from that milestone too.
I don't know if this should pick the milestones on a per-project basis (so show v1.2 for GitLab Runner, then v8.8 for GitLab CE, ...), or if that would also be confusing. Something like this would do that:
class Milestone
def self.upcoming_ids_by_projects(projects)
self.unscoped.
of_projects(projects).
select('DISTINCT ON (project_id) id').
where('due_date > ?', Time.now).
order(:project_id, :due_date)
end
end