Commit 036e297c authored by Grzegorz Bizon's avatar Grzegorz Bizon

Expose CI job commands and use in legacy processor

parent 6920390a
...@@ -80,12 +80,7 @@ module Ci ...@@ -80,12 +80,7 @@ module Ci
{ {
stage_idx: @stages.index(job[:stage]), stage_idx: @stages.index(job[:stage]),
stage: job[:stage], stage: job[:stage],
## commands: job[:commands],
# 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"),
tag_list: job[:tags] || [], tag_list: job[:tags] || [],
name: name, name: name,
only: job[:only], only: job[:only],
...@@ -124,8 +119,12 @@ module Ci ...@@ -124,8 +119,12 @@ module Ci
end end
def validate_job_keys!(name, job) def validate_job_keys!(name, job)
##
# TODO, remove refactoring keys
#
refactoring_keys = [:commands]
job.keys.each do |key| 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}" raise ValidationError, "#{name} job: unknown parameter #{key}"
end end
end end
......
...@@ -40,23 +40,24 @@ module Gitlab ...@@ -40,23 +40,24 @@ module Gitlab
def before_script def before_script
if before_script_defined? if before_script_defined?
before_script_value.to_a before_script_value
else else
@global.before_script.to_a @global.before_script
end end
end end
def commands def commands
(before_script + script).join("\n") [before_script, script].compact.join("\n")
end end
private private
def to_hash def to_hash
{ before_script: before_script_value, { before_script: before_script,
script: script_value, script: script,
stage: stage_value, commands: commands,
after_script: after_script_value } stage: stage,
after_script: after_script }
end end
def compose! def compose!
......
...@@ -23,7 +23,7 @@ describe Gitlab::Ci::Config::Node::Global do ...@@ -23,7 +23,7 @@ describe Gitlab::Ci::Config::Node::Global do
after_script: ['make clean'], after_script: ['make clean'],
stages: ['build', 'pages'], stages: ['build', 'pages'],
cache: { key: 'k', untracked: true, paths: ['public/'] }, cache: { key: 'k', untracked: true, paths: ['public/'] },
rspec: { script: 'rspec' }, rspec: { script: %w[rspec ls] },
spinach: { script: 'spinach' } } spinach: { script: 'spinach' } }
end end
...@@ -129,8 +129,14 @@ describe Gitlab::Ci::Config::Node::Global do ...@@ -129,8 +129,14 @@ describe Gitlab::Ci::Config::Node::Global do
describe '#jobs' do describe '#jobs' do
it 'returns jobs configuration' do it 'returns jobs configuration' do
expect(global.jobs) expect(global.jobs)
.to eq(rspec: { script: %w[rspec], stage: 'test' }, .to eq(rspec: { before_script: %w[ls pwd],
spinach: { script: %w[spinach], stage: 'test' }) 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 end
end end
......
...@@ -56,6 +56,7 @@ describe Gitlab::Ci::Config::Node::Job do ...@@ -56,6 +56,7 @@ describe Gitlab::Ci::Config::Node::Job do
expect(entry.value) expect(entry.value)
.to eq(before_script: %w[ls pwd], .to eq(before_script: %w[ls pwd],
script: %w[rspec], script: %w[rspec],
commands: "ls\npwd\nrspec",
stage: 'test', stage: 'test',
after_script: %w[cleanup]) after_script: %w[cleanup])
end end
...@@ -114,7 +115,7 @@ describe Gitlab::Ci::Config::Node::Job do ...@@ -114,7 +115,7 @@ describe Gitlab::Ci::Config::Node::Job do
end end
it 'returns correct script' do it 'returns correct script' do
expect(entry.before_script).to eq [] expect(entry.before_script).to be_nil
end end
end end
end end
......
require 'spec_helper' require 'spec_helper'
describe Gitlab::Ci::Config::Node::Jobs do 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 describe 'validations' do
before do before do
...@@ -62,8 +63,12 @@ describe Gitlab::Ci::Config::Node::Jobs do ...@@ -62,8 +63,12 @@ describe Gitlab::Ci::Config::Node::Jobs do
describe '#value' do describe '#value' do
it 'returns key value' do it 'returns key value' do
expect(entry.value) expect(entry.value)
.to eq(rspec: { script: %w[rspec], stage: 'test' }, .to eq(rspec: { script: %w[rspec],
spinach: { script: %w[spinach], stage: 'test' }) commands: 'rspec',
stage: 'test' },
spinach: { script: %w[spinach],
commands: 'spinach',
stage: 'test' })
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment