Displays banner to notify users ADO is implicitly enabled
If ADO is implicitly enabled for a project due to the instance wide setting feature or feature flag rollout then an owner or maintainer visiting that project are going to see a banner. Closes #50535
This commit is contained in:
parent
ec9bb1a7de
commit
d6fa67824d
7 changed files with 94 additions and 0 deletions
|
@ -49,6 +49,13 @@ export default class Project {
|
|||
$(this).parents('.no-password-message').remove();
|
||||
return e.preventDefault();
|
||||
});
|
||||
$('.hide-auto-devops-implicitly-enabled-banner').on('click', function(e) {
|
||||
const projectId = $(this).data('project-id');
|
||||
const cookieKey = `hide_auto_devops_implicitly_enabled_banner_${projectId}`;
|
||||
Cookies.set(cookieKey, 'false');
|
||||
$(this).parents('.auto-devops-implicitly-enabled-banner').remove();
|
||||
return e.preventDefault();
|
||||
});
|
||||
Project.projectSelectDropdown();
|
||||
}
|
||||
|
||||
|
|
|
@ -203,6 +203,14 @@ module ProjectsHelper
|
|||
current_user.require_extra_setup_for_git_auth?
|
||||
end
|
||||
|
||||
def show_auto_devops_implicitly_enabled_banner?(project)
|
||||
cookie_key = "hide_auto_devops_implicitly_enabled_banner_#{project.id}"
|
||||
|
||||
project.has_auto_devops_implicitly_enabled? &&
|
||||
cookies[cookie_key.to_sym].blank? &&
|
||||
(project.owner == current_user || project.team.maintainer?(current_user))
|
||||
end
|
||||
|
||||
def link_to_set_password
|
||||
if current_user.require_password_creation_for_git?
|
||||
link_to s_('SetPasswordToCloneLink|set a password'), edit_profile_password_path
|
||||
|
|
|
@ -5,3 +5,4 @@
|
|||
- if current_user && can?(current_user, :download_code, project)
|
||||
= render 'shared/no_ssh'
|
||||
= render 'shared/no_password'
|
||||
= render 'shared/auto_devops_implicitly_enabled_banner', project: project
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
- if show_auto_devops_implicitly_enabled_banner?(project)
|
||||
.auto-devops-implicitly-enabled-banner.alert.alert-warning
|
||||
- more_information_link = link_to _('More information'), 'https://docs.gitlab.com/ee/topics/autodevops/', class: 'alert-link'
|
||||
- auto_devops_message = s_("AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}") % { more_information_link: more_information_link }
|
||||
= auto_devops_message.html_safe
|
||||
.alert-link-group
|
||||
= link_to _('Settings'), project_settings_ci_cd_path(project), class: 'alert-link'
|
||||
|
|
||||
= link_to _('Dismiss'), '#', class: 'hide-auto-devops-implicitly-enabled-banner alert-link', data: { project_id: project.id }
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Display banner on project page if AutoDevOps is implicitly enabled
|
||||
merge_request: 21503
|
||||
author:
|
||||
type: added
|
|
@ -730,6 +730,9 @@ msgstr ""
|
|||
msgid "AutoDevOps|Learn more in the %{link_to_documentation}"
|
||||
msgstr ""
|
||||
|
||||
msgid "AutoDevOps|The Auto DevOps pipeline has been enabled and will be used if no alternative CI configuration file is found. %{more_information_link}"
|
||||
msgstr ""
|
||||
|
||||
msgid "AutoDevOps|You can automatically build and test your application if you %{link_to_auto_devops_settings} for this project. You can automatically deploy it as well, if you %{link_to_add_kubernetes_cluster}."
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe 'Project > Show > User interacts with auto devops implicitly enabled banner' do
|
||||
let(:project) { create(:project, :repository) }
|
||||
let(:user) { create(:user) }
|
||||
|
||||
before do
|
||||
project.add_user(user, role)
|
||||
sign_in(user)
|
||||
end
|
||||
|
||||
context 'when user does not have maintainer access' do
|
||||
let(:role) { :developer }
|
||||
|
||||
context 'when AutoDevOps is implicitly enabled' do
|
||||
it 'does not display AutoDevOps implicitly enabled banner' do
|
||||
expect(page).not_to have_css('.auto-devops-implicitly-enabled-banner')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when user has mantainer access' do
|
||||
let(:role) { :maintainer }
|
||||
|
||||
context 'when AutoDevOps is implicitly enabled' do
|
||||
before do
|
||||
stub_application_setting(auto_devops_enabled: true)
|
||||
|
||||
visit project_path(project)
|
||||
end
|
||||
|
||||
it 'display AutoDevOps implicitly enabled banner' do
|
||||
expect(page).to have_css('.auto-devops-implicitly-enabled-banner')
|
||||
end
|
||||
|
||||
context 'when user dismisses the banner', :js do
|
||||
it 'does not display AutoDevOps implicitly enabled banner' do
|
||||
find('.hide-auto-devops-implicitly-enabled-banner').click
|
||||
wait_for_requests
|
||||
visit project_path(project)
|
||||
|
||||
expect(page).not_to have_css('.auto-devops-implicitly-enabled-banner')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when AutoDevOps is not implicitly enabled' do
|
||||
before do
|
||||
stub_application_setting(auto_devops_enabled: false)
|
||||
|
||||
visit project_path(project)
|
||||
end
|
||||
|
||||
it 'does not display AutoDevOps implicitly enabled banner' do
|
||||
expect(page).not_to have_css('.auto-devops-implicitly-enabled-banner')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue