Add incremental build trace update API
This commit is contained in:
parent
d712789054
commit
38a1378e63
3 changed files with 44 additions and 1 deletions
|
@ -231,11 +231,23 @@ module Ci
|
||||||
end
|
end
|
||||||
|
|
||||||
def trace=(trace)
|
def trace=(trace)
|
||||||
|
recreate_trace_dir
|
||||||
|
File.write(path_to_trace, trace)
|
||||||
|
end
|
||||||
|
|
||||||
|
def recreate_trace_dir
|
||||||
unless Dir.exists?(dir_to_trace)
|
unless Dir.exists?(dir_to_trace)
|
||||||
FileUtils.mkdir_p(dir_to_trace)
|
FileUtils.mkdir_p(dir_to_trace)
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
private :recreate_trace_dir
|
||||||
|
|
||||||
File.write(path_to_trace, trace)
|
def append_trace(trace_part)
|
||||||
|
recreate_trace_dir
|
||||||
|
|
||||||
|
File.open(path_to_trace, 'a') do |f|
|
||||||
|
f.write(trace_part)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def dir_to_trace
|
def dir_to_trace
|
||||||
|
|
|
@ -50,6 +50,15 @@ module Ci
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
patch ":id/trace.txt" do
|
||||||
|
authenticate_runner!
|
||||||
|
update_runner_last_contact
|
||||||
|
build = Ci::Build.where(runner_id: current_runner.id).running.find(params[:id])
|
||||||
|
forbidden!('Build has been erased!') if build.erased?
|
||||||
|
|
||||||
|
build.append_trace(params[:trace_part])
|
||||||
|
end
|
||||||
|
|
||||||
# Authorize artifacts uploading for build - Runners only
|
# Authorize artifacts uploading for build - Runners only
|
||||||
#
|
#
|
||||||
# Parameters:
|
# Parameters:
|
||||||
|
|
|
@ -156,6 +156,28 @@ describe Ci::API::API do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'PATCH /builds/:id/trace.txt' do
|
||||||
|
let(:build) { create(:ci_build, :trace, runner_id: runner.id) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
build.run!
|
||||||
|
patch ci_api("/builds/#{build.id}/trace.txt"), trace_part: ' appended', token: runner.token
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should append trace part to the trace' do
|
||||||
|
expect(response.status).to eq 200
|
||||||
|
expect(build.reload.trace).to eq 'BUILD TRACE appended'
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when build has been erased' do
|
||||||
|
let(:build) { create(:ci_build, runner_id: runner.id, erased_at: Time.now) }
|
||||||
|
|
||||||
|
it 'should respond with forbidden' do
|
||||||
|
expect(response.status).to eq 403
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context "Artifacts" do
|
context "Artifacts" do
|
||||||
let(:file_upload) { fixture_file_upload(Rails.root + 'spec/fixtures/banana_sample.gif', 'image/gif') }
|
let(:file_upload) { fixture_file_upload(Rails.root + 'spec/fixtures/banana_sample.gif', 'image/gif') }
|
||||||
let(:file_upload2) { fixture_file_upload(Rails.root + 'spec/fixtures/dk.png', 'image/gif') }
|
let(:file_upload2) { fixture_file_upload(Rails.root + 'spec/fixtures/dk.png', 'image/gif') }
|
||||||
|
|
Loading…
Reference in a new issue