diff options
author | Valery Sizov <vsv2711@gmail.com> | 2015-06-02 17:20:50 +0300 |
---|---|---|
committer | Valery Sizov <vsv2711@gmail.com> | 2015-06-03 16:36:54 +0300 |
commit | 2333fe7e992cc20a283cd1759a3d14cfbb160ebd (patch) | |
tree | b6f415915da6e03485dc0f534a4d034f9f2519a9 | |
parent | d1ed2c41114d6f9827b0a9fb1b5afb73849765ba (diff) | |
download | gitlab-ci-2333fe7e992cc20a283cd1759a3d14cfbb160ebd.tar.gz |
improve migrator of deprecated jobs
-rw-r--r-- | app/services/create_commit_service.rb | 5 | ||||
-rw-r--r-- | db/migrate/20150601043222_migrate_jobs_to_yaml.rb | 7 | ||||
-rw-r--r-- | lib/gitlab_ci_yaml_processor.rb | 16 |
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 |