Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
59857938
Commit
59857938
authored
Apr 07, 2021
by
Francisco Javier López
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add Ci/CD menu to new sidebar refactor
This commits move the CI/CD menu from the HAML view to the new refactor.
parent
23675d9d
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
349 additions
and
102 deletions
+349
-102
app/helpers/sidebars_helper.rb
app/helpers/sidebars_helper.rb
+2
-1
app/views/layouts/nav/sidebar/_project_menus.html.haml
app/views/layouts/nav/sidebar/_project_menus.html.haml
+0
-46
ee/app/views/layouts/nav/_test_cases_link.html.haml
ee/app/views/layouts/nav/_test_cases_link.html.haml
+0
-8
ee/lib/ee/sidebars/projects/menus/ci_cd_menu.rb
ee/lib/ee/sidebars/projects/menus/ci_cd_menu.rb
+37
-0
ee/spec/lib/ee/sidebars/projects/menus/ci_cd_menu_spec.rb
ee/spec/lib/ee/sidebars/projects/menus/ci_cd_menu_spec.rb
+43
-0
ee/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb
ee/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb
+27
-0
lib/sidebars/projects/menus/ci_cd_menu.rb
lib/sidebars/projects/menus/ci_cd_menu.rb
+114
-0
lib/sidebars/projects/panel.rb
lib/sidebars/projects/panel.rb
+1
-0
qa/qa/page/project/sub_menus/ci_cd.rb
qa/qa/page/project/sub_menus/ci_cd.rb
+1
-5
spec/lib/sidebars/projects/menus/ci_cd_menu_spec.rb
spec/lib/sidebars/projects/menus/ci_cd_menu_spec.rb
+66
-0
spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb
spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb
+58
-42
No files found.
app/helpers/sidebars_helper.rb
View file @
59857938
...
@@ -40,7 +40,8 @@ module SidebarsHelper
...
@@ -40,7 +40,8 @@ module SidebarsHelper
container:
project
,
container:
project
,
learn_gitlab_experiment_enabled:
learn_gitlab_experiment_enabled?
(
project
),
learn_gitlab_experiment_enabled:
learn_gitlab_experiment_enabled?
(
project
),
current_ref:
current_ref
,
current_ref:
current_ref
,
jira_issues_integration:
project_jira_issues_integration?
jira_issues_integration:
project_jira_issues_integration?
,
can_view_pipeline_editor:
can_view_pipeline_editor?
(
project
)
}
}
end
end
end
end
app/views/layouts/nav/sidebar/_project_menus.html.haml
View file @
59857938
-
if
project_nav_tab?
:pipelines
=
nav_link
(
controller:
[
:pipelines
,
:builds
,
:jobs
,
:pipeline_schedules
,
:artifacts
,
:test_cases
,
:pipeline_editor
],
unless:
->
{
current_path?
(
'projects/pipelines#charts'
)
})
do
=
link_to
project_pipelines_path
(
@project
),
class:
'shortcuts-pipelines qa-link-pipelines rspec-link-pipelines'
,
data:
{
qa_selector:
'ci_cd_link'
}
do
.nav-icon-container
=
sprite_icon
(
'rocket'
)
%span
.nav-item-name
#js-onboarding-pipelines-link
=
_
(
'CI/CD'
)
%ul
.sidebar-sub-level-items
=
nav_link
(
controller:
[
:pipelines
,
:builds
,
:jobs
,
:pipeline_schedules
,
:artifacts
,
:test_cases
,
:pipeline_editor
],
html_options:
{
class:
"fly-out-top-item"
})
do
=
link_to
project_pipelines_path
(
@project
)
do
%strong
.fly-out-top-item-name
=
_
(
'CI/CD'
)
%li
.divider.fly-out-top-item
-
if
project_nav_tab?
:pipelines
=
nav_link
(
path:
[
'pipelines#index'
,
'pipelines#show'
])
do
=
link_to
project_pipelines_path
(
@project
),
title:
_
(
'Pipelines'
),
class:
'shortcuts-pipelines'
do
%span
=
_
(
'Pipelines'
)
-
if
can_view_pipeline_editor?
(
@project
)
=
nav_link
(
controller: :pipeline_editor
,
action: :show
)
do
=
link_to
project_ci_pipeline_editor_path
(
@project
),
title:
s_
(
'Pipelines|Editor'
)
do
%span
=
s_
(
'Pipelines|Editor'
)
-
if
project_nav_tab?
:builds
=
nav_link
(
controller: :jobs
)
do
=
link_to
project_jobs_path
(
@project
),
title:
_
(
'Jobs'
),
class:
'shortcuts-builds'
do
%span
=
_
(
'Jobs'
)
-
if
Feature
.
enabled?
(
:artifacts_management_page
,
@project
)
=
nav_link
(
controller: :artifacts
,
action: :index
)
do
=
link_to
project_artifacts_path
(
@project
),
title:
_
(
'Artifacts'
),
class:
'shortcuts-builds'
do
%span
=
_
(
'Artifacts'
)
-
if
project_nav_tab?
(
:pipelines
)
=
nav_link
(
controller: :pipeline_schedules
)
do
=
link_to
pipeline_schedules_path
(
@project
),
title:
_
(
'Schedules'
),
class:
'shortcuts-builds'
do
%span
=
_
(
'Schedules'
)
=
render_if_exists
"layouts/nav/test_cases_link"
,
project:
@project
-
if
project_nav_tab?
:security_and_compliance
-
if
project_nav_tab?
:security_and_compliance
=
render_if_exists
'layouts/nav/sidebar/project_security_link'
# EE-specific
=
render_if_exists
'layouts/nav/sidebar/project_security_link'
# EE-specific
...
...
ee/app/views/layouts/nav/_test_cases_link.html.haml
deleted
100644 → 0
View file @
23675d9d
-
return
unless
project
.
feature_available?
(
:quality_management
)
-
return
unless
can?
(
current_user
,
:read_issue
,
project
)
-
if
project_nav_tab?
(
:pipelines
)
=
nav_link
(
controller: :test_cases
)
do
=
link_to
project_quality_test_cases_path
(
project
),
title:
_
(
'Test Cases'
),
class:
'shortcuts-test-cases'
do
%span
=
_
(
'Test Cases'
)
ee/lib/ee/sidebars/projects/menus/ci_cd_menu.rb
0 → 100644
View file @
59857938
# frozen_string_literal: true
module
EE
module
Sidebars
module
Projects
module
Menus
module
CiCdMenu
extend
::
Gitlab
::
Utils
::
Override
override
:configure_menu_items
def
configure_menu_items
return
false
unless
super
add_item
(
test_cases_menu_item
)
true
end
private
def
test_cases_menu_item
return
unless
context
.
project
.
licensed_feature_available?
(
:quality_management
)
return
unless
can?
(
context
.
current_user
,
:read_issue
,
context
.
project
)
::
Sidebars
::
MenuItem
.
new
(
title:
_
(
'Test Cases'
),
link:
project_quality_test_cases_path
(
context
.
project
),
container_html_options:
{
class:
'shortcuts-test-cases'
},
active_routes:
{
controller: :test_cases
},
item_id: :test_cases
)
end
end
end
end
end
end
ee/spec/lib/ee/sidebars/projects/menus/ci_cd_menu_spec.rb
0 → 100644
View file @
59857938
# frozen_string_literal: true
require
'spec_helper'
RSpec
.
describe
Sidebars
::
Projects
::
Menus
::
CiCdMenu
do
let
(
:project
)
{
build
(
:project
)
}
let
(
:user
)
{
project
.
owner
}
let
(
:context
)
{
Sidebars
::
Projects
::
Context
.
new
(
current_user:
user
,
container:
project
,
can_view_pipeline_editor:
true
)
}
describe
'Test Cases'
do
subject
{
described_class
.
new
(
context
).
items
.
index
{
|
e
|
e
.
item_id
==
:test_cases
}
}
context
'when licensed feature quality_management is not enabled'
do
before
do
stub_licensed_features
(
quality_management:
false
)
end
it
'does not include test cases menu item'
do
is_expected
.
to
be_nil
end
end
context
'when licensed feature quality_management is enabled'
do
before
do
stub_licensed_features
(
quality_management:
true
)
end
context
'when user can read issues'
do
it
'includes test cases menu item'
do
is_expected
.
to
be_present
end
end
context
'when user cannot read issues'
do
let
(
:user
)
{
nil
}
it
'does not include test cases menu item'
do
is_expected
.
to
be_nil
end
end
end
end
end
ee/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb
View file @
59857938
...
@@ -122,6 +122,33 @@ RSpec.describe 'layouts/nav/sidebar/_project' do
...
@@ -122,6 +122,33 @@ RSpec.describe 'layouts/nav/sidebar/_project' do
end
end
end
end
describe
'CI/CD'
do
describe
'Test Cases'
do
let
(
:license_feature_status
)
{
true
}
before
do
stub_licensed_features
(
quality_management:
license_feature_status
)
allow
(
view
).
to
receive
(
:current_user
).
and_return
(
user
)
end
it
'has a link to the test cases page'
do
render
expect
(
rendered
).
to
have_link
(
'Test Cases'
,
href:
project_quality_test_cases_path
(
project
))
end
context
'when license feature :quality_management is not enabled'
do
let
(
:license_feature_status
)
{
false
}
it
'does not have a link to the test cases page'
do
render
expect
(
rendered
).
not_to
have_link
(
'Test Cases'
,
href:
project_quality_test_cases_path
(
project
))
end
end
end
end
describe
'Operations main link'
do
describe
'Operations main link'
do
let
(
:user
)
{
create
(
:user
)
}
let
(
:user
)
{
create
(
:user
)
}
...
...
lib/sidebars/projects/menus/ci_cd_menu.rb
0 → 100644
View file @
59857938
# frozen_string_literal: true
module
Sidebars
module
Projects
module
Menus
class
CiCdMenu
<
::
Sidebars
::
Menu
override
:configure_menu_items
def
configure_menu_items
return
unless
can?
(
context
.
current_user
,
:read_build
,
context
.
project
)
add_item
(
pipelines_menu_item
)
add_item
(
pipelines_editor_menu_item
)
add_item
(
jobs_menu_item
)
add_item
(
artifacts_menu_item
)
add_item
(
pipeline_schedules_menu_item
)
end
override
:link
def
link
project_pipelines_path
(
context
.
project
)
end
override
:extra_container_html_options
def
extra_container_html_options
{
class:
'shortcuts-pipelines rspec-link-pipelines'
}
end
override
:title
def
title
_
(
'CI/CD'
)
end
override
:title_html_options
def
title_html_options
{
id:
'js-onboarding-pipelines-link'
}
end
override
:sprite_icon
def
sprite_icon
'rocket'
end
private
def
pipelines_menu_item
::
Sidebars
::
MenuItem
.
new
(
title:
_
(
'Pipelines'
),
link:
project_pipelines_path
(
context
.
project
),
container_html_options:
{
class:
'shortcuts-pipelines'
},
active_routes:
{
path:
pipelines_routes
},
item_id: :pipelines
)
end
def
pipelines_routes
%w[
pipelines#index
pipelines#show
pipelines#new
]
end
def
pipelines_editor_menu_item
return
unless
context
.
can_view_pipeline_editor
::
Sidebars
::
MenuItem
.
new
(
title:
s_
(
'Pipelines|Editor'
),
link:
project_ci_pipeline_editor_path
(
context
.
project
),
active_routes:
{
path:
'projects/ci/pipeline_editor#show'
},
item_id: :pipelines_editor
)
end
def
jobs_menu_item
::
Sidebars
::
MenuItem
.
new
(
title:
_
(
'Jobs'
),
link:
project_jobs_path
(
context
.
project
),
container_html_options:
{
class:
'shortcuts-builds'
},
active_routes:
{
controller: :jobs
},
item_id: :jobs
)
end
def
artifacts_menu_item
return
unless
Feature
.
enabled?
(
:artifacts_management_page
,
context
.
project
)
::
Sidebars
::
MenuItem
.
new
(
title:
_
(
'Artifacts'
),
link:
project_artifacts_path
(
context
.
project
),
container_html_options:
{
class:
'shortcuts-builds'
},
active_routes:
{
path:
'artifacts#index'
},
item_id: :artifacts
)
end
def
pipeline_schedules_menu_item
::
Sidebars
::
MenuItem
.
new
(
title:
_
(
'Schedules'
),
link:
pipeline_schedules_path
(
context
.
project
),
container_html_options:
{
class:
'shortcuts-builds'
},
active_routes:
{
controller: :pipeline_schedules
},
item_id: :pipeline_schedules
)
end
end
end
end
end
Sidebars
::
Projects
::
Menus
::
CiCdMenu
.
prepend_if_ee
(
'EE::Sidebars::Projects::Menus::CiCdMenu'
)
lib/sidebars/projects/panel.rb
View file @
59857938
...
@@ -14,6 +14,7 @@ module Sidebars
...
@@ -14,6 +14,7 @@ module Sidebars
add_menu
(
Sidebars
::
Projects
::
Menus
::
ExternalIssueTrackerMenu
.
new
(
context
))
add_menu
(
Sidebars
::
Projects
::
Menus
::
ExternalIssueTrackerMenu
.
new
(
context
))
add_menu
(
Sidebars
::
Projects
::
Menus
::
LabelsMenu
.
new
(
context
))
add_menu
(
Sidebars
::
Projects
::
Menus
::
LabelsMenu
.
new
(
context
))
add_menu
(
Sidebars
::
Projects
::
Menus
::
MergeRequestsMenu
.
new
(
context
))
add_menu
(
Sidebars
::
Projects
::
Menus
::
MergeRequestsMenu
.
new
(
context
))
add_menu
(
Sidebars
::
Projects
::
Menus
::
CiCdMenu
.
new
(
context
))
end
end
override
:render_raw_menus_partial
override
:render_raw_menus_partial
...
...
qa/qa/page/project/sub_menus/ci_cd.rb
View file @
59857938
...
@@ -12,16 +12,12 @@ module QA
...
@@ -12,16 +12,12 @@ module QA
base
.
class_eval
do
base
.
class_eval
do
include
QA
::
Page
::
Project
::
SubMenus
::
Common
include
QA
::
Page
::
Project
::
SubMenus
::
Common
view
'app/views/layouts/nav/sidebar/_project_menus.html.haml'
do
element
:link_pipelines
end
end
end
end
end
def
click_ci_cd_pipelines
def
click_ci_cd_pipelines
within_sidebar
do
within_sidebar
do
click_element
:link_pipelines
click_element
(
:sidebar_menu_link
,
menu_item:
'CI/CD'
)
end
end
end
end
end
end
...
...
spec/lib/sidebars/projects/menus/ci_cd_menu_spec.rb
0 → 100644
View file @
59857938
# frozen_string_literal: true
require
'spec_helper'
RSpec
.
describe
Sidebars
::
Projects
::
Menus
::
CiCdMenu
do
let
(
:project
)
{
build
(
:project
)
}
let
(
:user
)
{
project
.
owner
}
let
(
:can_view_pipeline_editor
)
{
true
}
let
(
:context
)
{
Sidebars
::
Projects
::
Context
.
new
(
current_user:
user
,
container:
project
,
current_ref:
'master'
,
can_view_pipeline_editor:
can_view_pipeline_editor
)
}
subject
{
described_class
.
new
(
context
)
}
describe
'#render?'
do
context
'when user cannot read builds'
do
let
(
:user
)
{
nil
}
it
'returns false'
do
expect
(
subject
.
render?
).
to
eq
false
end
end
context
'when user can read builds'
do
it
'returns true'
do
expect
(
subject
.
render?
).
to
eq
true
end
end
end
describe
'Pipelines Editor'
do
subject
{
described_class
.
new
(
context
).
items
.
index
{
|
e
|
e
.
item_id
==
:pipelines_editor
}
}
context
'when user cannot view pipeline editor'
do
let
(
:can_view_pipeline_editor
)
{
false
}
it
'does not include pipeline editor menu item'
do
is_expected
.
to
be_nil
end
end
context
'when user can view pipeline editor'
do
it
'includes pipeline editor menu item'
do
is_expected
.
not_to
be_nil
end
end
end
describe
'Artifacts'
do
subject
{
described_class
.
new
(
context
).
items
.
index
{
|
e
|
e
.
item_id
==
:artifacts
}
}
context
'when feature flag :artifacts_management_page is disabled'
do
it
'does not include artifacts menu item'
do
stub_feature_flags
(
artifacts_management_page:
false
)
is_expected
.
to
be_nil
end
end
context
'when feature flag :artifacts_management_page is enabled'
do
it
'includes artifacts menu item'
do
stub_feature_flags
(
artifacts_management_page:
true
)
is_expected
.
not_to
be_nil
end
end
end
end
spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb
View file @
59857938
...
@@ -257,6 +257,64 @@ RSpec.describe 'layouts/nav/sidebar/_project' do
...
@@ -257,6 +257,64 @@ RSpec.describe 'layouts/nav/sidebar/_project' do
end
end
end
end
describe
'CI/CD'
do
it
'has a link to pipelines page'
do
render
expect
(
rendered
).
to
have_link
(
'CI/CD'
,
href:
project_pipelines_path
(
project
))
end
describe
'Artifacts'
do
it
'has a link to the artifacts page'
do
render
expect
(
rendered
).
to
have_link
(
'Artifacts'
,
href:
project_artifacts_path
(
project
))
end
end
describe
'Jobs'
do
it
'has a link to the jobs page'
do
render
expect
(
rendered
).
to
have_link
(
'Jobs'
,
href:
project_jobs_path
(
project
))
end
end
describe
'Pipeline Schedules'
do
it
'has a link to the pipeline schedules page'
do
render
expect
(
rendered
).
to
have_link
(
'Schedules'
,
href:
pipeline_schedules_path
(
project
))
end
end
describe
'Pipelines'
do
it
'has a link to the pipelines page'
do
render
expect
(
rendered
).
to
have_link
(
'Pipelines'
,
href:
project_pipelines_path
(
project
))
end
end
describe
'Pipeline Editor'
do
it
'has a link to the pipeline editor'
do
render
expect
(
rendered
).
to
have_link
(
'Editor'
,
href:
project_ci_pipeline_editor_path
(
project
))
end
context
'when user cannot access pipeline editor'
do
it
'does not has a link to the pipeline editor'
do
allow
(
view
).
to
receive
(
:can_view_pipeline_editor?
).
and_return
(
false
)
render
expect
(
rendered
).
not_to
have_link
(
'Editor'
,
href:
project_ci_pipeline_editor_path
(
project
))
end
end
end
end
describe
'packages tab'
do
describe
'packages tab'
do
before
do
before
do
stub_container_registry_config
(
enabled:
true
)
stub_container_registry_config
(
enabled:
true
)
...
@@ -419,48 +477,6 @@ RSpec.describe 'layouts/nav/sidebar/_project' do
...
@@ -419,48 +477,6 @@ RSpec.describe 'layouts/nav/sidebar/_project' do
end
end
end
end
describe
'ci/cd settings tab'
do
before
do
project
.
update!
(
archived:
project_archived
)
end
context
'when project is archived'
do
let
(
:project_archived
)
{
true
}
it
'does not show the ci/cd settings tab'
do
render
expect
(
rendered
).
not_to
have_link
(
'CI/CD'
,
href:
project_settings_ci_cd_path
(
project
))
end
end
context
'when project is active'
do
let
(
:project_archived
)
{
false
}
it
'shows the ci/cd settings tab'
do
render
expect
(
rendered
).
to
have_link
(
'CI/CD'
,
href:
project_settings_ci_cd_path
(
project
))
end
end
end
describe
'pipeline editor link'
do
it
'shows the pipeline editor link'
do
render
expect
(
rendered
).
to
have_link
(
'Editor'
,
href:
project_ci_pipeline_editor_path
(
project
))
end
it
'does not show the pipeline editor link'
do
allow
(
view
).
to
receive
(
:can_view_pipeline_editor?
).
and_return
(
false
)
render
expect
(
rendered
).
not_to
have_link
(
'Editor'
,
href:
project_ci_pipeline_editor_path
(
project
))
end
end
describe
'operations settings tab'
do
describe
'operations settings tab'
do
describe
'archive projects'
do
describe
'archive projects'
do
before
do
before
do
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment