Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/ci/gitlab_ci_yaml_processor.rb13
-rw-r--r--lib/gitlab/ci/config/node/job.rb15
-rw-r--r--spec/lib/gitlab/ci/config/node/global_spec.rb12
-rw-r--r--spec/lib/gitlab/ci/config/node/job_spec.rb3
-rw-r--r--spec/lib/gitlab/ci/config/node/jobs_spec.rb11
5 files changed, 33 insertions, 21 deletions
diff --git a/lib/ci/gitlab_ci_yaml_processor.rb b/lib/ci/gitlab_ci_yaml_processor.rb
index ed8dd0f9e47..61075d3b923 100644
--- a/lib/ci/gitlab_ci_yaml_processor.rb
+++ b/lib/ci/gitlab_ci_yaml_processor.rb
@@ -80,12 +80,7 @@ module Ci
{
stage_idx: @stages.index(job[:stage]),
stage: job[:stage],
- ##
- # Refactoring note:
- # - before script behaves differently than after script
- # - after script returns an array of commands
- # - before script should be a concatenated command
- commands: [job[:before_script] || @before_script, job[:script]].flatten.compact.join("\n"),
+ commands: job[:commands],
tag_list: job[:tags] || [],
name: name,
only: job[:only],
@@ -124,8 +119,12 @@ module Ci
end
def validate_job_keys!(name, job)
+ ##
+ # TODO, remove refactoring keys
+ #
+ refactoring_keys = [:commands]
job.keys.each do |key|
- unless ALLOWED_JOB_KEYS.include? key
+ unless (ALLOWED_JOB_KEYS + refactoring_keys).include? key
raise ValidationError, "#{name} job: unknown parameter #{key}"
end
end
diff --git a/lib/gitlab/ci/config/node/job.rb b/lib/gitlab/ci/config/node/job.rb
index 5ee91ebcf0b..bb1c3386bd4 100644
--- a/lib/gitlab/ci/config/node/job.rb
+++ b/lib/gitlab/ci/config/node/job.rb
@@ -40,23 +40,24 @@ module Gitlab
def before_script
if before_script_defined?
- before_script_value.to_a
+ before_script_value
else
- @global.before_script.to_a
+ @global.before_script
end
end
def commands
- (before_script + script).join("\n")
+ [before_script, script].compact.join("\n")
end
private
def to_hash
- { before_script: before_script_value,
- script: script_value,
- stage: stage_value,
- after_script: after_script_value }
+ { before_script: before_script,
+ script: script,
+ commands: commands,
+ stage: stage,
+ after_script: after_script }
end
def compose!
diff --git a/spec/lib/gitlab/ci/config/node/global_spec.rb b/spec/lib/gitlab/ci/config/node/global_spec.rb
index 3ffbe9c2e97..f46359f7ee6 100644
--- a/spec/lib/gitlab/ci/config/node/global_spec.rb
+++ b/spec/lib/gitlab/ci/config/node/global_spec.rb
@@ -23,7 +23,7 @@ describe Gitlab::Ci::Config::Node::Global do
after_script: ['make clean'],
stages: ['build', 'pages'],
cache: { key: 'k', untracked: true, paths: ['public/'] },
- rspec: { script: 'rspec' },
+ rspec: { script: %w[rspec ls] },
spinach: { script: 'spinach' } }
end
@@ -129,8 +129,14 @@ describe Gitlab::Ci::Config::Node::Global do
describe '#jobs' do
it 'returns jobs configuration' do
expect(global.jobs)
- .to eq(rspec: { script: %w[rspec], stage: 'test' },
- spinach: { script: %w[spinach], stage: 'test' })
+ .to eq(rspec: { before_script: %w[ls pwd],
+ script: %w[rspec ls],
+ commands: "ls\npwd\nrspec\nls",
+ stage: 'test' },
+ spinach: { before_script: %w[ls pwd],
+ script: %w[spinach],
+ commands: "ls\npwd\nspinach",
+ stage: 'test' })
end
end
end
diff --git a/spec/lib/gitlab/ci/config/node/job_spec.rb b/spec/lib/gitlab/ci/config/node/job_spec.rb
index 635362611a0..816c0f275d6 100644
--- a/spec/lib/gitlab/ci/config/node/job_spec.rb
+++ b/spec/lib/gitlab/ci/config/node/job_spec.rb
@@ -56,6 +56,7 @@ describe Gitlab::Ci::Config::Node::Job do
expect(entry.value)
.to eq(before_script: %w[ls pwd],
script: %w[rspec],
+ commands: "ls\npwd\nrspec",
stage: 'test',
after_script: %w[cleanup])
end
@@ -114,7 +115,7 @@ describe Gitlab::Ci::Config::Node::Job do
end
it 'returns correct script' do
- expect(entry.before_script).to eq []
+ expect(entry.before_script).to be_nil
end
end
end
diff --git a/spec/lib/gitlab/ci/config/node/jobs_spec.rb b/spec/lib/gitlab/ci/config/node/jobs_spec.rb
index 255646a001a..60ab1d2150d 100644
--- a/spec/lib/gitlab/ci/config/node/jobs_spec.rb
+++ b/spec/lib/gitlab/ci/config/node/jobs_spec.rb
@@ -1,7 +1,8 @@
require 'spec_helper'
describe Gitlab::Ci::Config::Node::Jobs do
- let(:entry) { described_class.new(config, global: spy) }
+ let(:entry) { described_class.new(config, global: global) }
+ let(:global) { double('global', before_script: nil, stages: %w[test]) }
describe 'validations' do
before do
@@ -62,8 +63,12 @@ describe Gitlab::Ci::Config::Node::Jobs do
describe '#value' do
it 'returns key value' do
expect(entry.value)
- .to eq(rspec: { script: %w[rspec], stage: 'test' },
- spinach: { script: %w[spinach], stage: 'test' })
+ .to eq(rspec: { script: %w[rspec],
+ commands: 'rspec',
+ stage: 'test' },
+ spinach: { script: %w[spinach],
+ commands: 'spinach',
+ stage: 'test' })
end
end