diff --git a/app/models/ci/bridge.rb b/app/models/ci/bridge.rb index a6cd16ee5706c5ca5e2bbac3a095e2a0bc77be7f..80458ccc6c905d36dae0e0a5d8626cddedea3ac2 100644 --- a/app/models/ci/bridge.rb +++ b/app/models/ci/bridge.rb @@ -25,6 +25,8 @@ class Bridge < Ci::Processable validates :ref, presence: true + delegate :trigger_short_token, to: :trigger_request, allow_nil: true + # rubocop:disable Cop/ActiveRecordSerialize serialize :options serialize :yaml_variables, ::Gitlab::Serializer::Ci::Variables diff --git a/spec/models/ci/bridge_spec.rb b/spec/models/ci/bridge_spec.rb index 802c90e22012e4b1a48e16cdd33fb98bcde73887..cf6f622fd66fe4311cd81d07acb36d3d619c6091 100644 --- a/spec/models/ci/bridge_spec.rb +++ b/spec/models/ci/bridge_spec.rb @@ -759,6 +759,24 @@ expect(bridge.variables.to_hash) .to eq(bridge.scoped_variables.concat(bridge.pipeline.persisted_variables).to_hash) end + + context 'when bridge is for a trigger request' do + let(:trigger) { create(:ci_trigger, project: project) } + let(:trigger_request) { create(:ci_trigger_request, pipeline: pipeline, trigger: trigger) } + + let(:predefined_trigger_variables) do + [{ key: 'CI_PIPELINE_TRIGGERED', value: 'true', public: true, masked: false }, + { key: 'CI_TRIGGER_SHORT_TOKEN', value: trigger.short_token, public: true, masked: false }] + end + + before do + bridge.trigger_request = trigger_request + end + + it 'includes the trigger variables' do + expect(bridge.variables).to include(*predefined_trigger_variables) + end + end end describe '#pipeline_variables' do