diff options
author | Tomasz Maczukin <tomasz@maczukin.pl> | 2018-03-26 19:26:52 +0200 |
---|---|---|
committer | Tomasz Maczukin <tomasz@maczukin.pl> | 2018-03-26 19:26:52 +0200 |
commit | 5e72dff82d992a456ba7ba07795d9dfd94c8658e (patch) | |
tree | 878ab31e577f692bede593214d1ba7aef5e1722b | |
parent | c37013532972d4d1b7698ef31af2901e0faa928c (diff) | |
download | gitlab-ce-add-per-runner-job-timeout.tar.gz |
Remove Ci::Build#timeoutadd-per-runner-job-timeout
-rw-r--r-- | app/models/ci/build.rb | 6 | ||||
-rw-r--r-- | lib/api/entities.rb | 2 | ||||
-rw-r--r-- | lib/gitlab/ci/build/step.rb | 4 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/build/step_spec.rb | 12 | ||||
-rw-r--r-- | spec/models/ci/build_spec.rb | 37 | ||||
-rw-r--r-- | spec/requests/api/runner_spec.rb | 4 |
6 files changed, 17 insertions, 48 deletions
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index b5fe57eb49f..d47321c750a 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -25,6 +25,8 @@ module Ci has_one :metadata, class_name: 'Ci::BuildMetadata' + delegate :timeout, to: :metadata, prefix: true, allow_nil: true + # The "environment" field for builds is a String, and is the unexpanded name def persisted_environment @persisted_environment ||= Environment.find_by( @@ -239,10 +241,6 @@ module Ci latest_builds.where('stage_idx < ?', stage_idx) end - def timeout - ensure_metadata.timeout - end - def triggered_by?(current_user) user == current_user end diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 324e14f5654..38161d1f127 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -1120,7 +1120,7 @@ module API end class RunnerInfo < Grape::Entity - expose :timeout + expose :metadata_timeout, as: :timeout end class Step < Grape::Entity diff --git a/lib/gitlab/ci/build/step.rb b/lib/gitlab/ci/build/step.rb index 411f67f8ce7..0b1ebe4e048 100644 --- a/lib/gitlab/ci/build/step.rb +++ b/lib/gitlab/ci/build/step.rb @@ -14,7 +14,7 @@ module Gitlab self.new(:script).tap do |step| step.script = job.options[:before_script].to_a + job.options[:script].to_a step.script = job.commands.split("\n") if step.script.empty? - step.timeout = job.timeout + step.timeout = job.metadata_timeout step.when = WHEN_ON_SUCCESS end end @@ -25,7 +25,7 @@ module Gitlab self.new(:after_script).tap do |step| step.script = after_script - step.timeout = job.timeout + step.timeout = job.metadata_timeout step.when = WHEN_ALWAYS step.allow_failure = true end diff --git a/spec/lib/gitlab/ci/build/step_spec.rb b/spec/lib/gitlab/ci/build/step_spec.rb index 5a21282712a..cce4efaa069 100644 --- a/spec/lib/gitlab/ci/build/step_spec.rb +++ b/spec/lib/gitlab/ci/build/step_spec.rb @@ -5,10 +5,14 @@ describe Gitlab::Ci::Build::Step do shared_examples 'has correct script' do subject { described_class.from_commands(job) } + before do + job.run! + end + it 'fabricates an object' do expect(subject.name).to eq(:script) expect(subject.script).to eq(script) - expect(subject.timeout).to eq(job.timeout) + expect(subject.timeout).to eq(job.metadata_timeout) expect(subject.when).to eq('on_success') expect(subject.allow_failure).to be_falsey end @@ -47,6 +51,10 @@ describe Gitlab::Ci::Build::Step do subject { described_class.from_after_script(job) } + before do + job.run! + end + context 'when after_script is empty' do it 'doesn not fabricate an object' do is_expected.to be_nil @@ -59,7 +67,7 @@ describe Gitlab::Ci::Build::Step do it 'fabricates an object' do expect(subject.name).to eq(:after_script) expect(subject.script).to eq(['ls -la', 'date']) - expect(subject.timeout).to eq(job.timeout) + expect(subject.timeout).to eq(job.metadata_timeout) expect(subject.when).to eq('always') expect(subject.allow_failure).to be_truthy end diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb index 7923cf61380..798f8835826 100644 --- a/spec/models/ci/build_spec.rb +++ b/spec/models/ci/build_spec.rb @@ -1249,43 +1249,6 @@ describe Ci::Build do end describe 'project settings' do - describe '#timeout' do - set(:project2) { create(:project, :repository, group: group, build_timeout: 1000) } - set(:pipeline2) { create(:ci_pipeline, project: project2, sha: project2.commit.id, ref: project2.default_branch, status: 'success') } - - let(:build) { create(:ci_build, :pending, pipeline: pipeline2) } - - subject { build.timeout } - - before do - build.run! - end - - context 'when runner is not assigned' do - it 'returns project timeout configuration' do - is_expected.to be_nil - end - end - - context 'when runner sets timeout to bigger value' do - let(:runner2) { create(:ci_runner, maximum_timeout: 2000) } - let(:build) { create(:ci_build, :pending, pipeline: pipeline2, runner: runner2) } - - it 'returns project timeout configuration' do - is_expected.to eq(project2.build_timeout) - end - end - - context 'when runner sets timeout to smaller value' do - let(:runner2) { create(:ci_runner, maximum_timeout: 600) } - let(:build) { create(:ci_build, :pending, pipeline: pipeline2, runner: runner2) } - - it 'returns project timeout configuration' do - is_expected.to eq(runner2.maximum_timeout) - end - end - end - describe '#allow_git_fetch' do it 'return project allow_git_fetch configuration' do expect(build.allow_git_fetch).to eq(project.build_allow_git_fetch) diff --git a/spec/requests/api/runner_spec.rb b/spec/requests/api/runner_spec.rb index 80c1e617b85..a74013c36fa 100644 --- a/spec/requests/api/runner_spec.rb +++ b/spec/requests/api/runner_spec.rb @@ -359,12 +359,12 @@ describe API::Runner do let(:expected_steps) do [{ 'name' => 'script', 'script' => %w(ls date), - 'timeout' => job.timeout, + 'timeout' => job.metadata_timeout, 'when' => 'on_success', 'allow_failure' => false }, { 'name' => 'after_script', 'script' => %w(ls date), - 'timeout' => job.timeout, + 'timeout' => job.metadata_timeout, 'when' => 'always', 'allow_failure' => true }] end |