summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz Maczukin <tomasz@maczukin.pl>2018-03-26 19:26:52 +0200
committerTomasz Maczukin <tomasz@maczukin.pl>2018-03-26 19:26:52 +0200
commit5e72dff82d992a456ba7ba07795d9dfd94c8658e (patch)
tree878ab31e577f692bede593214d1ba7aef5e1722b
parentc37013532972d4d1b7698ef31af2901e0faa928c (diff)
downloadgitlab-ce-add-per-runner-job-timeout.tar.gz
Remove Ci::Build#timeoutadd-per-runner-job-timeout
-rw-r--r--app/models/ci/build.rb6
-rw-r--r--lib/api/entities.rb2
-rw-r--r--lib/gitlab/ci/build/step.rb4
-rw-r--r--spec/lib/gitlab/ci/build/step_spec.rb12
-rw-r--r--spec/models/ci/build_spec.rb37
-rw-r--r--spec/requests/api/runner_spec.rb4
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