summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValery Sizov <vsv2711@gmail.com>2015-06-02 17:20:50 +0300
committerValery Sizov <vsv2711@gmail.com>2015-06-03 16:36:54 +0300
commit2333fe7e992cc20a283cd1759a3d14cfbb160ebd (patch)
treeb6f415915da6e03485dc0f534a4d034f9f2519a9
parentd1ed2c41114d6f9827b0a9fb1b5afb73849765ba (diff)
downloadgitlab-ci-2333fe7e992cc20a283cd1759a3d14cfbb160ebd.tar.gz
improve migrator of deprecated jobs
-rw-r--r--app/services/create_commit_service.rb5
-rw-r--r--db/migrate/20150601043222_migrate_jobs_to_yaml.rb7
-rw-r--r--lib/gitlab_ci_yaml_processor.rb16
3 files changed, 20 insertions, 8 deletions
diff --git a/app/services/create_commit_service.rb b/app/services/create_commit_service.rb
index 2bf81e8..bcd7a63 100644
--- a/app/services/create_commit_service.rb
+++ b/app/services/create_commit_service.rb
@@ -3,7 +3,8 @@ class CreateCommitService
before_sha = params[:before]
sha = params[:checkout_sha] || params[:after]
origin_ref = params[:ref]
- config_processor = build_config_processor(params[:ci_yaml_file])
+ yaml_config = params[:ci_yaml_file] || project.generated_yaml_config
+ config_processor = build_config_processor(yaml_config)
unless origin_ref && sha.present?
return false
@@ -46,7 +47,7 @@ class CreateCommitService
repository: params[:repository],
commits: params[:commits],
total_commits_count: params[:total_commits_count],
- ci_yaml_file: params[:ci_yaml_file]
+ ci_yaml_file: yaml_config
}
}
diff --git a/db/migrate/20150601043222_migrate_jobs_to_yaml.rb b/db/migrate/20150601043222_migrate_jobs_to_yaml.rb
index b8f8553..19533b3 100644
--- a/db/migrate/20150601043222_migrate_jobs_to_yaml.rb
+++ b/db/migrate/20150601043222_migrate_jobs_to_yaml.rb
@@ -25,7 +25,7 @@ class MigrateJobsToYaml < ActiveRecord::Migration
# Create Jobs
select_all(sql).each do |job|
config[:jobs] << {
- script: job["commands"],
+ script: job["commands"].split("\n").map(&:strip),
name: job["name"],
branches: parse_boolean_value(job["build_branches"]),
tags: parse_boolean_value(job["build_tags"]),
@@ -36,7 +36,7 @@ class MigrateJobsToYaml < ActiveRecord::Migration
# Create Deploy Jobs
select_all(sql.sub("parallel", 'deploy')).each do |job|
config[:deploy_jobs] << {
- script: job["commands"],
+ script: job["commands"].split("\n").map(&:strip),
name: job["name"],
refs: job["refs"],
runner: job["tags"]
@@ -49,6 +49,9 @@ class MigrateJobsToYaml < ActiveRecord::Migration
yaml_config.sub!("---", "# This file is generated by GitLab CI")
+ # Convert array of scripts to multiline string
+ yaml_config.gsub!(" -", " ").gsub!("script:", "script: |")
+
execute("UPDATE projects SET generated_yaml_config = '#{quote_string(yaml_config)}' WHERE projects.id = #{project["id"]}")
end
end
diff --git a/lib/gitlab_ci_yaml_processor.rb b/lib/gitlab_ci_yaml_processor.rb
index 8adea84..0d893df 100644
--- a/lib/gitlab_ci_yaml_processor.rb
+++ b/lib/gitlab_ci_yaml_processor.rb
@@ -13,7 +13,7 @@ class GitlabCiYamlProcessor
normalized_jobs.map do |job|
{
name: job[:name],
- commands: "#{@before_script.join("\n")}\n#{job[:script]}",
+ commands: "#{normalized_script(@before_script)}\n#{job[:script]}",
tag_list: job[:runner],
branches: job[:branches],
tags: job[:tag]
@@ -25,7 +25,7 @@ class GitlabCiYamlProcessor
normalized_deploy_jobs.map do |job|
{
name: job[:name],
- commands: "#{@before_script.join("\n")}\n#{job[:script]}",
+ commands: "#{normalized_script(@before_script)}\n#{job[:script]}",
deploy: true,
refs: job[:refs],
tag_list: job[:runner]
@@ -71,7 +71,7 @@ class GitlabCiYamlProcessor
{ script: job, runner: "", name: job[0..10], branches: true, tags: true }
else
{
- script: job[:script].strip,
+ script: normalized_script(job[:script]),
runner: job[:runner] || "",
name: job[:name] || job[:script][0..10],
branches: job[:branches].nil? ? true : job[:branches],
@@ -87,7 +87,7 @@ class GitlabCiYamlProcessor
{ script: job, refs: [], name: job[0..10].strip }
else
{
- script: job[:script].strip,
+ script: normalized_script(job[:script]),
refs: (job[:refs] || "").split(",").map(&:strip),
name: job[:name] || job[:script][0..10].strip,
runner: job[:runner] || "",
@@ -95,4 +95,12 @@ class GitlabCiYamlProcessor
end
end
end
+
+ def normalized_script(script)
+ if script.is_a? Array
+ script.map(&:strip).join("\n")
+ else
+ script.strip
+ end
+ end
end