diff options
Diffstat (limited to 'lib/gitlab/ci/pipeline/chain/config/content/external_project.rb')
-rw-r--r-- | lib/gitlab/ci/pipeline/chain/config/content/external_project.rb | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/lib/gitlab/ci/pipeline/chain/config/content/external_project.rb b/lib/gitlab/ci/pipeline/chain/config/content/external_project.rb index 8a19e433483..092e7d43371 100644 --- a/lib/gitlab/ci/pipeline/chain/config/content/external_project.rb +++ b/lib/gitlab/ci/pipeline/chain/config/content/external_project.rb @@ -11,8 +11,12 @@ module Gitlab strong_memoize(:content) do next unless external_project_path? - path_file, path_project = ci_config_path.split('@', 2) - YAML.dump('include' => [{ 'project' => path_project, 'file' => path_file }]) + path_file, path_project, ref = extract_location_tokens + + config_location = { 'project' => path_project, 'file' => path_file } + config_location['ref'] = ref if ref.present? + + YAML.dump('include' => [config_location]) end end @@ -26,6 +30,18 @@ module Gitlab def external_project_path? ci_config_path =~ /\A.+(yml|yaml)@.+\z/ end + + # Example: path/to/.gitlab-ci.yml@another-group/another-project:refname + def extract_location_tokens + path_file, path_project = ci_config_path.split('@', 2) + + if path_project.include? ":" + project, ref = path_project.split(':', 2) + [path_file, project, ref] + else + [path_file, path_project] + end + end end end end |