Commit 79b25f53 authored by Simon Knox's avatar Simon Knox Committed by Alper Akgun

Remove group_iterations feature flag

parent 8457ee85
......@@ -7,14 +7,10 @@ info: To determine the technical writer assigned to the Stage/Group associated w
# Iterations **(PREMIUM)**
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/214713) in GitLab 13.1.
> - Deployed behind a feature flag, disabled by default.
> - [Enabled by default](https://gitlab.com/gitlab-org/gitlab/-/issues/221047) in GitLab 13.2.
> - Enabled on GitLab.com.
> - Can be enabled or disabled per-group.
> - Recommended for production use.
> - For GitLab self-managed instances, GitLab administrators can opt to [disable it](#enable-or-disable-iterations).
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/214713) in GitLab 13.1 [with a flag](../../../administration/feature_flags.md) named `group_iterations`. Disabled by default.
> - [Enabled on self-managed](https://gitlab.com/gitlab-org/gitlab/-/issues/221047) in GitLab 13.2.
> - Moved to GitLab Premium in 13.9.
> - [Generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/221047) in GitLab 14.6. [Feature flag `group_iterations`](https://gitlab.com/gitlab-org/gitlab/-/issues/221047) removed.
Iterations are a way to track issues over a period of time. This allows teams
to track velocity and volatility metrics. Iterations can be used with [milestones](../../project/milestones/index.md)
......@@ -171,30 +167,6 @@ To group issues by label:
You can also search for labels by typing in the search input.
1. Select or tap outside of the label dropdown. The page is now grouped by the selected labels.
## Enable or disable iterations **(PREMIUM SELF)**
GitLab Iterations feature is deployed with a feature flag that is **enabled by default**.
[GitLab administrators with access to the GitLab Rails console](../../../administration/feature_flags.md)
can disable it for your instance. `:group_iterations` can be enabled or disabled per-group.
To enable it:
```ruby
# Instance-wide
Feature.enable(:group_iterations)
# or by group
Feature.enable(:group_iterations, Group.find(<group ID>))
```
To disable it:
```ruby
# Instance-wide
Feature.disable(:group_iterations)
# or by group
Feature.disable(:group_iterations, Group.find(<group ID>))
```
### Enable or disable iteration cadences **(PREMIUM SELF)**
Iteration Cadences feature is under development and not ready for production use. It is
......
......@@ -2,9 +2,8 @@
- breadcrumb_title params[:id]
- page_title s_("Iterations|Edit iteration")
- if Feature.enabled?(:group_iterations, @group, default_enabled: true)
.js-iteration{ data: { full_path: @group.full_path,
iterations_list_path: group_iterations_path(@group),
can_edit: can?(current_user, :admin_iteration, @group).to_s,
iteration_id: params[:id],
preview_markdown_path: preview_markdown_path(@group) } }
.js-iteration{ data: { full_path: @group.full_path,
iterations_list_path: group_iterations_path(@group),
can_edit: can?(current_user, :admin_iteration, @group).to_s,
iteration_id: params[:id],
preview_markdown_path: preview_markdown_path(@group) } }
- page_title _("Iterations")
- if Feature.enabled?(:group_iterations, @group, default_enabled: true)
.js-iterations-list{ data: { full_path: @group.full_path, can_admin: can?(current_user, :create_iteration, @group).to_s, new_iteration_path: new_group_iteration_path(@group) } }
.js-iterations-list{ data: { full_path: @group.full_path, can_admin: can?(current_user, :create_iteration, @group).to_s, new_iteration_path: new_group_iteration_path(@group) } }
......@@ -2,12 +2,11 @@
- breadcrumb_title params[:id]
- page_title _("Iterations")
- if Feature.enabled?(:group_iterations, @group, default_enabled: true)
.js-iteration{ data: { full_path: @group.full_path,
can_edit: can?(current_user, :admin_iteration, @group).to_s,
has_scoped_labels_feature: @group.licensed_feature_available?(:scoped_labels).to_s,
iteration_id: params[:id],
iterations_list_path: group_iterations_path(@group),
labels_fetch_path: group_labels_path(@group, format: :json, include_ancestor_groups: true),
preview_markdown_path: preview_markdown_path(@group),
svg_path: image_path('illustrations/issues.svg') } }
.js-iteration{ data: { full_path: @group.full_path,
can_edit: can?(current_user, :admin_iteration, @group).to_s,
has_scoped_labels_feature: @group.licensed_feature_available?(:scoped_labels).to_s,
iteration_id: params[:id],
iterations_list_path: group_iterations_path(@group),
labels_fetch_path: group_labels_path(@group, format: :json, include_ancestor_groups: true),
preview_markdown_path: preview_markdown_path(@group),
svg_path: image_path('illustrations/issues.svg') } }
- if Feature.enabled?(:group_iterations, @project.group, default_enabled: true) && @project.group.licensed_feature_available?(:iterations)
- if @project.group.licensed_feature_available?(:iterations)
.js-iteration-select{ data: { can_edit: can_edit, group_path: group_path, project_path: project_path, issue_iid: issue_iid } }
---
name: group_iterations
introduced_by_url:
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/221047
milestone:
type: development
group: group::project management
default_enabled: true
......@@ -32,7 +32,7 @@ module EE
end
def iterations_enabled?
::Feature.enabled?(:group_iterations, context.group, default_enabled: true) && context.group.licensed_feature_available?(:iterations)
context.group.licensed_feature_available?(:iterations)
end
def user_can_access_iterations?
......
......@@ -104,7 +104,6 @@ RSpec.describe 'Iterations list', :js do
context 'as user' do
before do
stub_licensed_features(iterations: true)
stub_feature_flags(group_iterations: true)
group.add_developer(user)
sign_in(user)
visit group_iterations_path(group)
......
......@@ -14,7 +14,6 @@ RSpec.describe 'Group navbar' do
before do
group.add_maintainer(user)
stub_feature_flags(group_iterations: false)
stub_feature_flags(customer_relations: false)
stub_group_wikis(false)
sign_in(user)
......@@ -208,13 +207,6 @@ RSpec.describe 'Group navbar' do
context 'when iterations are available' do
before do
stub_licensed_features(iterations: true)
stub_feature_flags(group_iterations: true)
insert_after_sub_nav_item(
_('Milestones'),
within: _('Issues'),
new_sub_nav_item_name: _('Iterations')
)
visit group_path(group)
end
......
......@@ -70,28 +70,10 @@ RSpec.describe 'layouts/nav/sidebar/_group' do
stub_licensed_features(iterations: true)
end
context 'with group iterations feature flag enabled' do
before do
stub_feature_flags(group_iterations: true)
end
it 'is visible' do
render
expect(rendered).to have_text 'Iterations'
end
end
context 'with iterations feature flag disabled' do
before do
stub_feature_flags(group_iterations: false)
end
it 'is not visible' do
render
it 'is visible' do
render
expect(rendered).not_to have_text 'Iterations'
end
expect(rendered).to have_text 'Iterations'
end
end
......
......@@ -14,7 +14,6 @@ RSpec.describe 'Group navbar' do
before do
insert_package_nav(_('Kubernetes'))
stub_feature_flags(group_iterations: false)
stub_feature_flags(customer_relations: false)
stub_config(dependency_proxy: { enabled: false })
stub_config(registry: { enabled: false })
......
......@@ -190,7 +190,8 @@ RSpec.shared_context 'group navbar structure' do
[
_('List'),
_('Board'),
_('Milestones')
_('Milestones'),
(_('Iterations') if Gitlab.ee?)
]
end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment