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