From ac87bd0c113e5265d7913e13c005850a4f6bf4c3 Mon Sep 17 00:00:00 2001 From: Eric Eastwood Date: Mon, 20 Nov 2017 10:40:01 -0600 Subject: [PATCH] Add checkboxes to automatically run AutoDevops pipeline Fix https://gitlab.com/gitlab-org/gitlab-ce/issues/38962 --- app/assets/javascripts/dispatcher.js | 7 + app/assets/javascripts/flash.js | 2 +- app/assets/javascripts/main.js | 4 +- .../projects/ci_cd_settings_bundle.js | 19 +++ app/assets/stylesheets/framework/flash.scss | 12 +- .../projects/pipelines_settings_controller.rb | 1 + app/views/layouts/_flash.html.haml | 12 +- .../pipelines_settings/_show.html.haml | 26 ++-- .../autodevops/img/auto_devops_settings.png | Bin 0 -> 67845 bytes doc/topics/autodevops/index.md | 6 +- .../settings/pipelines_settings_spec.rb | 126 ++++++++++++++++-- spec/javascripts/flash_spec.js | 2 +- 12 files changed, 187 insertions(+), 30 deletions(-) create mode 100644 app/assets/javascripts/projects/ci_cd_settings_bundle.js create mode 100644 doc/topics/autodevops/img/auto_devops_settings.png diff --git a/app/assets/javascripts/dispatcher.js b/app/assets/javascripts/dispatcher.js index 34708977d20..9e84e441ae8 100644 --- a/app/assets/javascripts/dispatcher.js +++ b/app/assets/javascripts/dispatcher.js @@ -521,6 +521,13 @@ import ProjectVariables from './project_variables'; case 'projects:settings:ci_cd:show': // Initialize expandable settings panels initSettingsPanels(); + + import(/* webpackChunkName: "ci-cd-settings" */ './projects/ci_cd_settings_bundle') + .then(ciCdSettings => ciCdSettings.default()) + .catch((err) => { + Flash(s__('ProjectSettings|Problem setting up the CI/CD settings JavaScript')); + throw err; + }); case 'groups:settings:ci_cd:show': new ProjectVariables(); break; diff --git a/app/assets/javascripts/flash.js b/app/assets/javascripts/flash.js index 67261c1c9b4..44deab9288e 100644 --- a/app/assets/javascripts/flash.js +++ b/app/assets/javascripts/flash.js @@ -41,7 +41,7 @@ const createFlashEl = (message, type, isInContentWrapper = false) => ` `; const removeFlashClickListener = (flashEl, fadeTransition) => { - flashEl.parentNode.addEventListener('click', () => hideFlash(flashEl, fadeTransition)); + flashEl.addEventListener('click', () => hideFlash(flashEl, fadeTransition)); }; /* diff --git a/app/assets/javascripts/main.js b/app/assets/javascripts/main.js index 08e326cba9c..5e0edd823be 100644 --- a/app/assets/javascripts/main.js +++ b/app/assets/javascripts/main.js @@ -301,6 +301,8 @@ $(function () { const flashContainer = document.querySelector('.flash-container'); if (flashContainer && flashContainer.children.length) { - removeFlashClickListener(flashContainer.children[0]); + flashContainer.querySelectorAll('.flash-alert, .flash-notice, .flash-success').forEach((flashEl) => { + removeFlashClickListener(flashEl); + }); } }); diff --git a/app/assets/javascripts/projects/ci_cd_settings_bundle.js b/app/assets/javascripts/projects/ci_cd_settings_bundle.js new file mode 100644 index 00000000000..90e418f6771 --- /dev/null +++ b/app/assets/javascripts/projects/ci_cd_settings_bundle.js @@ -0,0 +1,19 @@ +function updateAutoDevopsRadios(radioWrappers) { + radioWrappers.forEach((radioWrapper) => { + const radio = radioWrapper.querySelector('.js-auto-devops-enable-radio'); + const runPipelineCheckboxWrapper = radioWrapper.querySelector('.js-run-auto-devops-pipeline-checkbox-wrapper'); + const runPipelineCheckbox = radioWrapper.querySelector('.js-run-auto-devops-pipeline-checkbox'); + + if (runPipelineCheckbox) { + runPipelineCheckbox.checked = radio.checked; + runPipelineCheckboxWrapper.classList.toggle('hide', !radio.checked); + } + }); +} + +export default function initCiCdSettings() { + const radioWrappers = document.querySelectorAll('.js-auto-devops-enable-radio-wrapper'); + radioWrappers.forEach(radioWrapper => + radioWrapper.addEventListener('change', () => updateAutoDevopsRadios(radioWrappers)), + ); +} diff --git a/app/assets/stylesheets/framework/flash.scss b/app/assets/stylesheets/framework/flash.scss index e1b086ebb2b..88ce119ee3a 100644 --- a/app/assets/stylesheets/framework/flash.scss +++ b/app/assets/stylesheets/framework/flash.scss @@ -34,8 +34,15 @@ } } + .flash-success { + @extend .alert; + @extend .alert-success; + margin: 0; + } + .flash-notice, - .flash-alert { + .flash-alert, + .flash-success { border-radius: $border-radius-default; .container-fluid, @@ -48,7 +55,8 @@ margin-bottom: 0; .flash-notice, - .flash-alert { + .flash-alert, + .flash-success { border-radius: 0; } } diff --git a/app/controllers/projects/pipelines_settings_controller.rb b/app/controllers/projects/pipelines_settings_controller.rb index e65495b420e..b890818c475 100644 --- a/app/controllers/projects/pipelines_settings_controller.rb +++ b/app/controllers/projects/pipelines_settings_controller.rb @@ -12,6 +12,7 @@ class Projects::PipelinesSettingsController < Projects::ApplicationController if service.run_auto_devops_pipeline? CreatePipelineWorker.perform_async(project.id, current_user.id, project.default_branch, :web, ignore_skip_ci: true, save_on_errors: false) + flash[:success] = "A new Auto DevOps pipeline has been created, go to Pipelines page for details".html_safe end redirect_to project_settings_ci_cd_path(@project) diff --git a/app/views/layouts/_flash.html.haml b/app/views/layouts/_flash.html.haml index baa8036de10..1db32379df3 100644 --- a/app/views/layouts/_flash.html.haml +++ b/app/views/layouts/_flash.html.haml @@ -1,10 +1,6 @@ .flash-container.flash-container-page - - if alert - .flash-alert + -# We currently only support `alert`, `notice`, `success` + - flash.each do |key, value| + %div{ class: "flash-#{key}" } %div{ class: (container_class) } - %span= alert - - - elsif notice - .flash-notice - %div{ class: (container_class) } - %span= notice + %span= value diff --git a/app/views/projects/pipelines_settings/_show.html.haml b/app/views/projects/pipelines_settings/_show.html.haml index 77211099830..ee4fa663b9f 100644 --- a/app/views/projects/pipelines_settings/_show.html.haml +++ b/app/views/projects/pipelines_settings/_show.html.haml @@ -13,29 +13,39 @@ %p.settings-message.text-center = message.html_safe = f.fields_for :auto_devops_attributes, @auto_devops do |form| - .radio + .radio.js-auto-devops-enable-radio-wrapper = form.label :enabled_true do - = form.radio_button :enabled, 'true' + = form.radio_button :enabled, 'true', class: 'js-auto-devops-enable-radio' %strong Enable Auto DevOps %br %span.descr The Auto DevOps pipeline configuration will be used when there is no .gitlab-ci.yml in the project. - .radio + - if show_run_auto_devops_pipeline_checkbox_for_explicit_setting?(@project) + .checkbox.hide.js-run-auto-devops-pipeline-checkbox-wrapper + = label_tag 'project[run_auto_devops_pipeline_explicit]' do + = check_box_tag 'project[run_auto_devops_pipeline_explicit]', true, false, class: 'js-run-auto-devops-pipeline-checkbox' + = s_('ProjectSettings|Immediately run a pipeline on the default branch') + + .radio.js-auto-devops-enable-radio-wrapper = form.label :enabled_false do - = form.radio_button :enabled, 'false' + = form.radio_button :enabled, 'false', class: 'js-auto-devops-enable-radio' %strong Disable Auto DevOps %br %span.descr An explicit .gitlab-ci.yml needs to be specified before you can begin using Continuous Integration and Delivery. - .radio - = form.label :enabled_nil do - = form.radio_button :enabled, '' + .radio.js-auto-devops-enable-radio-wrapper + = form.label :enabled_ do + = form.radio_button :enabled, '', class: 'js-auto-devops-enable-radio' %strong Instance default (#{current_application_settings.auto_devops_enabled? ? 'enabled' : 'disabled'}) %br %span.descr Follow the instance default to either have Auto DevOps enabled or disabled when there is no project specific .gitlab-ci.yml. - %br + - if show_run_auto_devops_pipeline_checkbox_for_instance_setting?(@project) + .checkbox.hide.js-run-auto-devops-pipeline-checkbox-wrapper + = label_tag 'project[run_auto_devops_pipeline_implicit]' do + = check_box_tag 'project[run_auto_devops_pipeline_implicit]', true, false, class: 'js-run-auto-devops-pipeline-checkbox' + = s_('ProjectSettings|Immediately run a pipeline on the default branch') %p You need to specify a domain if you want to use Auto Review Apps and Auto Deploy stages. = form.text_field :domain, class: 'form-control', placeholder: 'domain.com' diff --git a/doc/topics/autodevops/img/auto_devops_settings.png b/doc/topics/autodevops/img/auto_devops_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..b572cc5b85504984a5e968789249f40508385762 GIT binary patch literal 67845 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%0AX9X!ltM=ii??1O8V!!CX3<4E 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 S@;T=nKzvVEKbLh*2~7Z*qdRH< literal 0 HcmV?d00001 diff --git a/doc/topics/autodevops/index.md b/doc/topics/autodevops/index.md index 28308fc905c..914217772b8 100644 --- a/doc/topics/autodevops/index.md +++ b/doc/topics/autodevops/index.md @@ -121,7 +121,7 @@ Google Cloud. ## Enabling Auto DevOps -NOTE: **Note:** +**Note:** If you haven't done already, read the [prerequisites](#prerequisites) to make full use of Auto DevOps. If this is your fist time, we recommend you follow the [quick start guide](#quick-start). @@ -129,10 +129,14 @@ full use of Auto DevOps. If this is your fist time, we recommend you follow the 1. Go to your project's **Settings > CI/CD > General pipelines settings** and find the Auto DevOps section 1. Select "Enable Auto DevOps" +1. After selecting an option to enable Auto DevOps, a checkbox will appear below + so you can immediately run a pipeline on the default branch 1. Optionally, but recommended, add in the [base domain](#auto-devops-base-domain) that will be used by Kubernetes to deploy your application 1. Hit **Save changes** for the changes to take effect +![Project AutoDevops settings section](img/auto_devops_settings.png) + Now that it's enabled, there are a few more steps depending on whether your project has a `.gitlab-ci.yml` or not: diff --git a/spec/features/projects/settings/pipelines_settings_spec.rb b/spec/features/projects/settings/pipelines_settings_spec.rb index ea8f997409d..eb8e7265dd3 100644 --- a/spec/features/projects/settings/pipelines_settings_spec.rb +++ b/spec/features/projects/settings/pipelines_settings_spec.rb @@ -8,13 +8,14 @@ feature "Pipelines settings" do background do sign_in(user) project.team << [user, role] - visit project_pipelines_settings_path(project) end context 'for developer' do given(:role) { :developer } scenario 'to be disallowed to view' do + visit project_settings_ci_cd_path(project) + expect(page.status_code).to eq(404) end end @@ -23,6 +24,8 @@ feature "Pipelines settings" do given(:role) { :master } scenario 'be allowed to change' do + visit project_settings_ci_cd_path(project) + fill_in('Test coverage parsing', with: 'coverage_regex') click_on 'Save changes' @@ -32,6 +35,8 @@ feature "Pipelines settings" do end scenario 'updates auto_cancel_pending_pipelines' do + visit project_settings_ci_cd_path(project) + page.check('Auto-cancel redundant, pending pipelines') click_on 'Save changes' @@ -42,14 +47,119 @@ feature "Pipelines settings" do expect(checkbox).to be_checked end - scenario 'update auto devops settings' do - fill_in('project_auto_devops_attributes_domain', with: 'test.com') - page.choose('project_auto_devops_attributes_enabled_false') - click_on 'Save changes' + describe 'Auto DevOps' do + it 'update auto devops settings' do + visit project_settings_ci_cd_path(project) - expect(page.status_code).to eq(200) - expect(project.auto_devops).to be_present - expect(project.auto_devops).not_to be_enabled + fill_in('project_auto_devops_attributes_domain', with: 'test.com') + page.choose('project_auto_devops_attributes_enabled_false') + click_on 'Save changes' + + expect(page.status_code).to eq(200) + expect(project.auto_devops).to be_present + expect(project.auto_devops).not_to be_enabled + end + + describe 'Immediately run pipeline checkbox option', :js do + context 'when auto devops is set to instance default (enabled)' do + before do + stub_application_setting(auto_devops_enabled: true) + project.create_auto_devops!(enabled: nil) + visit project_settings_ci_cd_path(project) + end + + it 'does not show checkboxes on page-load' do + expect(page).to have_selector('.js-run-auto-devops-pipeline-checkbox-wrapper.hide', count: 1, visible: false) + end + + it 'selecting explicit disabled hides all checkboxes' do + page.choose('project_auto_devops_attributes_enabled_false') + + expect(page).to have_selector('.js-run-auto-devops-pipeline-checkbox-wrapper.hide', count: 1, visible: false) + end + + it 'selecting explicit enabled hides all checkboxes because we are already enabled' do + page.choose('project_auto_devops_attributes_enabled_true') + + expect(page).to have_selector('.js-run-auto-devops-pipeline-checkbox-wrapper.hide', count: 1, visible: false) + end + end + + context 'when auto devops is set to instance default (disabled)' do + before do + stub_application_setting(auto_devops_enabled: false) + project.create_auto_devops!(enabled: nil) + visit project_settings_ci_cd_path(project) + end + + it 'does not show checkboxes on page-load' do + expect(page).to have_selector('.js-run-auto-devops-pipeline-checkbox-wrapper.hide', count: 1, visible: false) + end + + it 'selecting explicit disabled hides all checkboxes' do + page.choose('project_auto_devops_attributes_enabled_false') + + expect(page).to have_selector('.js-run-auto-devops-pipeline-checkbox-wrapper.hide', count: 1, visible: false) + end + + it 'selecting explicit enabled shows a checkbox' do + page.choose('project_auto_devops_attributes_enabled_true') + + expect(page).to have_selector('.js-run-auto-devops-pipeline-checkbox-wrapper:not(.hide)', count: 1) + end + end + + context 'when auto devops is set to explicit disabled' do + before do + stub_application_setting(auto_devops_enabled: true) + project.create_auto_devops!(enabled: false) + visit project_settings_ci_cd_path(project) + end + + it 'does not show checkboxes on page-load' do + expect(page).to have_selector('.js-run-auto-devops-pipeline-checkbox-wrapper.hide', count: 2, visible: false) + end + + it 'selecting explicit enabled shows a checkbox' do + page.choose('project_auto_devops_attributes_enabled_true') + + expect(page).to have_selector('.js-run-auto-devops-pipeline-checkbox-wrapper:not(.hide)', count: 1) + end + + it 'selecting instance default (enabled) shows a checkbox' do + page.choose('project_auto_devops_attributes_enabled_') + + expect(page).to have_selector('.js-run-auto-devops-pipeline-checkbox-wrapper:not(.hide)', count: 1) + end + end + + context 'when auto devops is set to explicit enabled' do + before do + stub_application_setting(auto_devops_enabled: false) + project.create_auto_devops!(enabled: true) + visit project_settings_ci_cd_path(project) + end + + it 'does not have any checkboxes' do + expect(page).not_to have_selector('.js-run-auto-devops-pipeline-checkbox-wrapper', visible: false) + end + end + + context 'when master contains a .gitlab-ci.yml file' do + let(:project) { create(:project, :repository) } + + before do + project.repository.create_file(user, '.gitlab-ci.yml', "script: ['test']", message: 'test', branch_name: project.default_branch) + stub_application_setting(auto_devops_enabled: true) + project.create_auto_devops!(enabled: false) + visit project_settings_ci_cd_path(project) + end + + it 'does not have any checkboxes' do + expect(page).not_to have_selector('.js-run-auto-devops-pipeline-checkbox-wrapper', visible: false) + end + end + end end end end diff --git a/spec/javascripts/flash_spec.js b/spec/javascripts/flash_spec.js index b669aabcee4..97e3ab682c5 100644 --- a/spec/javascripts/flash_spec.js +++ b/spec/javascripts/flash_spec.js @@ -278,7 +278,7 @@ describe('Flash', () => { removeFlashClickListener(flashEl, false); - flashEl.parentNode.click(); + flashEl.click(); setTimeout(() => { expect(document.querySelector('.flash')).toBeNull();