summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/assets/javascripts/sidebar/event_hub.js7
-rw-r--r--app/assets/javascripts/users_select.js14
-rw-r--r--app/models/concerns/mentionable.rb2
-rw-r--r--app/services/ci/process_pipeline_service.rb2
-rw-r--r--changelogs/unreleased/fix-gb-fix-skipped-manual-actions.yml4
-rw-r--r--spec/policies/environment_policy_spec.rb2
-rw-r--r--spec/services/ci/process_pipeline_service_spec.rb22
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