Skip to content
Snippets Groups Projects
Commit 5b7f211c authored by Grzegorz Bizon's avatar Grzegorz Bizon
Browse files

Add new CI config entry that holds jobs definition

parent 9686a4f2
No related branches found
No related tags found
1 merge request!5087Move CI job config entries from legacy to new config
Pipeline #
Loading
Loading
@@ -33,11 +33,14 @@ module Gitlab
node :cache, Node::Cache,
description: 'Configure caching between build jobs.'
 
node :jobs, Node::Jobs,
description: 'Definition of jobs for this pipeline.'
helpers :before_script, :image, :services, :after_script,
:variables, :stages, :types, :cache
:variables, :stages, :types, :cache, :jobs
 
def initialize(config)
return super(config) unless config.is_a?(Hash)
return super unless config.is_a?(Hash)
 
jobs = config.except(*self.class.nodes.keys)
global = config.slice(*self.class.nodes.keys)
Loading
Loading
@@ -45,13 +48,6 @@ module Gitlab
super(global.merge(jobs: jobs))
end
 
##
# Temporary refactoring stub
#
def jobs
@config[:jobs]
end
def stages
stages_defined? ? stages_value : types_value
end
Loading
Loading
module Gitlab
module Ci
class Config
module Node
##
# Entry that represents a set of jobs.
#
class Jobs < Entry
include Validatable
validations do
validates :config, type: Hash
end
end
end
end
end
end
Loading
Loading
@@ -35,7 +35,7 @@ describe Gitlab::Ci::Config::Node::Global do
end
 
it 'creates node object for each entry' do
expect(global.nodes.count).to eq 8
expect(global.nodes.count).to eq 9
end
 
it 'creates node object using valid class' do
Loading
Loading
@@ -139,7 +139,7 @@ describe Gitlab::Ci::Config::Node::Global do
 
describe '#nodes' do
it 'instantizes all nodes' do
expect(global.nodes.count).to eq 8
expect(global.nodes.count).to eq 9
end
 
it 'contains undefined nodes' do
Loading
Loading
require 'spec_helper'
describe Gitlab::Ci::Config::Node::Jobs do
let(:entry) { described_class.new(config) }
describe 'validations' do
context 'when entry config value is correct' do
let(:config) { { rspec: { script: 'rspec' } } }
describe '#value' do
it 'returns key value' do
expect(entry.value).to eq(rspec: { script: 'rspec' })
end
end
describe '#valid?' do
it 'is valid' do
expect(entry).to be_valid
end
end
end
context 'when entry value is not correct' do
context 'incorrect config value type' do
let(:config) { ['incorrect'] }
describe '#errors' do
it 'saves errors' do
expect(entry.errors)
.to include 'jobs config should be a hash'
end
end
end
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment