diff options
-rw-r--r-- | app/assets/javascripts/sidebar/event_hub.js | 7 | ||||
-rw-r--r-- | app/assets/javascripts/users_select.js | 14 | ||||
-rw-r--r-- | app/models/concerns/mentionable.rb | 2 | ||||
-rw-r--r-- | app/services/ci/process_pipeline_service.rb | 2 | ||||
-rw-r--r-- | changelogs/unreleased/fix-gb-fix-skipped-manual-actions.yml | 4 | ||||
-rw-r--r-- | spec/policies/environment_policy_spec.rb | 2 | ||||
-rw-r--r-- | spec/services/ci/process_pipeline_service_spec.rb | 22 |
7 files changed, 43 insertions, 10 deletions
diff --git a/app/assets/javascripts/sidebar/event_hub.js b/app/assets/javascripts/sidebar/event_hub.js index 0948c2e5352..f35506fd5de 100644 --- a/app/assets/javascripts/sidebar/event_hub.js +++ b/app/assets/javascripts/sidebar/event_hub.js @@ -1,3 +1,8 @@ import Vue from 'vue'; -export default new Vue(); +const eventHub = new Vue(); + +// TODO: remove eventHub hack after code splitting refactor +window.emitSidebarEvent = (...args) => eventHub.$emit(...args); + +export default eventHub; diff --git a/app/assets/javascripts/users_select.js b/app/assets/javascripts/users_select.js index be29b08c343..38462782007 100644 --- a/app/assets/javascripts/users_select.js +++ b/app/assets/javascripts/users_select.js @@ -1,7 +1,9 @@ /* eslint-disable func-names, space-before-function-paren, one-var, no-var, prefer-rest-params, wrap-iife, quotes, max-len, one-var-declaration-per-line, vars-on-top, prefer-arrow-callback, consistent-return, comma-dangle, object-shorthand, no-shadow, no-unused-vars, no-else-return, no-self-compare, prefer-template, no-unused-expressions, no-lonely-if, yoda, prefer-spread, no-void, camelcase, no-param-reassign */ /* global Issuable */ +/* global emitSidebarEvent */ -import eventHub from './sidebar/event_hub'; +// TODO: remove eventHub hack after code splitting refactor +window.emitSidebarEvent = window.emitSidebarEvent || $.noop; (function() { var bind = function(fn, me) { return function() { return fn.apply(me, arguments); }; }, @@ -110,7 +112,7 @@ import eventHub from './sidebar/event_hub'; .find(`input[name='${$dropdown.data('field-name')}'][value=${firstSelectedId}]`); firstSelected.remove(); - eventHub.$emit('sidebar.removeAssignee', { + emitSidebarEvent('sidebar.removeAssignee', { id: firstSelectedId, }); } @@ -330,7 +332,7 @@ import eventHub from './sidebar/event_hub'; defaultLabel: defaultLabel, hidden: function(e) { if ($dropdown.hasClass('js-multiselect')) { - eventHub.$emit('sidebar.saveAssignees'); + emitSidebarEvent('sidebar.saveAssignees'); } if (!$dropdown.data('always-show-selectbox')) { @@ -364,10 +366,10 @@ import eventHub from './sidebar/event_hub'; const id = parseInt(element.value, 10); element.remove(); }); - eventHub.$emit('sidebar.removeAllAssignees'); + emitSidebarEvent('sidebar.removeAllAssignees'); } else if (isActive) { // user selected - eventHub.$emit('sidebar.addAssignee', user); + emitSidebarEvent('sidebar.addAssignee', user); // Remove unassigned selection (if it was previously selected) const unassignedSelected = $dropdown.closest('.selectbox') @@ -383,7 +385,7 @@ import eventHub from './sidebar/event_hub'; } // User unselected - eventHub.$emit('sidebar.removeAssignee', user); + emitSidebarEvent('sidebar.removeAssignee', user); } if (getSelected().find(u => u === gon.current_user_id)) { diff --git a/app/models/concerns/mentionable.rb b/app/models/concerns/mentionable.rb index 5ac56ac6fa0..6eddeab515e 100644 --- a/app/models/concerns/mentionable.rb +++ b/app/models/concerns/mentionable.rb @@ -92,7 +92,7 @@ module Mentionable # Uses regex to quickly determine if mentionables might be referenced # Allows heavy processing to be skipped def matches_cross_reference_regex? - reference_pattern = if project.default_issues_tracker? + reference_pattern = if !project || project.default_issues_tracker? ReferenceRegexes::DEFAULT_PATTERN else ReferenceRegexes::EXTERNAL_PATTERN diff --git a/app/services/ci/process_pipeline_service.rb b/app/services/ci/process_pipeline_service.rb index 33edcd60944..25ba54ffa0d 100644 --- a/app/services/ci/process_pipeline_service.rb +++ b/app/services/ci/process_pipeline_service.rb @@ -50,7 +50,7 @@ module Ci when 'always' %w[success failed skipped] when 'manual' - %w[success] + %w[success skipped] else [] end diff --git a/changelogs/unreleased/fix-gb-fix-skipped-manual-actions.yml b/changelogs/unreleased/fix-gb-fix-skipped-manual-actions.yml new file mode 100644 index 00000000000..d8d4c668a44 --- /dev/null +++ b/changelogs/unreleased/fix-gb-fix-skipped-manual-actions.yml @@ -0,0 +1,4 @@ +--- +title: Fix skipped manual actions problem when processing the pipeline +merge_request: 11164 +author: diff --git a/spec/policies/environment_policy_spec.rb b/spec/policies/environment_policy_spec.rb index 0e15beaa5e8..650432520bb 100644 --- a/spec/policies/environment_policy_spec.rb +++ b/spec/policies/environment_policy_spec.rb @@ -33,7 +33,7 @@ describe EnvironmentPolicy do let(:project) { create(:project, :public) } before do - project.add_master(user) + project.add_developer(user) end context 'when team member has ability to stop environment' do diff --git a/spec/services/ci/process_pipeline_service_spec.rb b/spec/services/ci/process_pipeline_service_spec.rb index cf773866a6f..1d0a28210fb 100644 --- a/spec/services/ci/process_pipeline_service_spec.rb +++ b/spec/services/ci/process_pipeline_service_spec.rb @@ -268,6 +268,24 @@ describe Ci::ProcessPipelineService, '#execute', :services do end end + context 'when there are only manual actions in stages' do + before do + create_build('image', stage_idx: 0, when: 'manual', allow_failure: true) + create_build('build', stage_idx: 1, when: 'manual', allow_failure: true) + create_build('deploy', stage_idx: 2, when: 'manual') + create_build('check', stage_idx: 3) + + process_pipeline + end + + it 'processes all jobs until blocking actions encountered' do + expect(all_builds_statuses).to eq(%w[manual manual manual created]) + expect(all_builds_names).to eq(%w[image build deploy check]) + + expect(pipeline.reload).to be_blocked + end + end + context 'when blocking manual actions are defined' do before do create_build('code:test', stage_idx: 0) @@ -441,6 +459,10 @@ describe Ci::ProcessPipelineService, '#execute', :services do builds.pluck(:name) end + def all_builds_names + all_builds.pluck(:name) + end + def builds_statuses builds.pluck(:status) end |