diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index 2955e0b2bca14714257fa58b7b509e889bd3f9e8..f3a402043056e1dd5ba8cf65b01ff4c24b5487ab 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -464,7 +464,7 @@ module Ci
       return @config_processor if defined?(@config_processor)
 
       @config_processor ||= begin
-        Gitlab::Ci::YamlProcessor.new(ci_yaml_file)
+        Gitlab::Ci::YamlProcessor.new(ci_yaml_file, project)
       rescue Gitlab::Ci::YamlProcessor::ValidationError => e
         self.yaml_errors = e.message
         nil
diff --git a/lib/gitlab/ci/config.rb b/lib/gitlab/ci/config.rb
index 94b2fbc082be251a64edad8dfcf4780f6ddf89b3..f665ace7c7461ef6194aae78eb4bb6a1a4b18fb8 100644
--- a/lib/gitlab/ci/config.rb
+++ b/lib/gitlab/ci/config.rb
@@ -6,12 +6,17 @@ module Gitlab
     class Config
       ConfigError = Class.new(StandardError)
 
-      def initialize(config, opts = {})
+      def initialize(config, project = nil, opts = {})
         initial_config = Config::Extendable
           .new(build_config(config, opts))
           .to_hash
-        processor = ::Gitlab::Ci::ExternalFiles::Processor.new(initial_config)
-        @config = processor.perform
+
+        if project.present?
+          processor = ::Gitlab::Ci::ExternalFiles::Processor.new(initial_config)
+          @config = processor.perform
+        else
+          @config = initial_config
+        end
 
         @global = Entry::Global.new(@config)
         @global.compose!
diff --git a/lib/gitlab/ci/yaml_processor.rb b/lib/gitlab/ci/yaml_processor.rb
index 5d1864ae9e26e757fd83278cac1b549e5ae57e43..702bcd3802d0ce6b24967349a20a41ef24955fed 100644
--- a/lib/gitlab/ci/yaml_processor.rb
+++ b/lib/gitlab/ci/yaml_processor.rb
@@ -7,8 +7,8 @@ module Gitlab
 
       attr_reader :cache, :stages, :jobs
 
-      def initialize(config, opts = {})
-        @ci_config = Gitlab::Ci::Config.new(config, opts)
+      def initialize(config, project = nil, opts = {})
+        @ci_config = Gitlab::Ci::Config.new(config, project, opts)
         @config = @ci_config.to_hash
 
         unless @ci_config.valid?
diff --git a/spec/lib/gitlab/ci/config_spec.rb b/spec/lib/gitlab/ci/config_spec.rb
index 99896b9be5d60ef31309a58f9b825d3953c3bb9b..57354e12aa397dfe8eb0689dc046aad6a0614b16 100644
--- a/spec/lib/gitlab/ci/config_spec.rb
+++ b/spec/lib/gitlab/ci/config_spec.rb
@@ -3,8 +3,9 @@ require 'fast_spec_helper'
 require_dependency 'active_model'
 
 describe Gitlab::Ci::Config do
+  let(:project) { create(:project, :repository) }
   let(:config) do
-    described_class.new(yml)
+    described_class.new(yml, project)
   end
 
   context 'when config is valid' do
@@ -125,7 +126,6 @@ describe Gitlab::Ci::Config do
     end
   end
 
-
   context "when yml has valid 'includes' defined" do
     let(:yml) do
       <<-EOS