Expose CI job commands and use in legacy processor
This commit is contained in:
		
							parent
							
								
									6920390aad
								
							
						
					
					
						commit
						036e297ca3
					
				| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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!
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue