diff options
author | Grzegorz Bizon <grzegorz@gitlab.com> | 2018-02-24 11:07:19 +0000 |
---|---|---|
committer | Ian Baum <ibaum@gitlab.com> | 2018-03-06 16:17:03 -0600 |
commit | 09f48199b3c721d54605a55d2ccdf85fc6ebad2f (patch) | |
tree | 30be758a8796f7f86f3f20de6282d7f0031b34e5 /app | |
parent | 29c3f5e7e685f18156efd00aa88e5d204694ceae (diff) | |
download | gitlab-ce-09f48199b3c721d54605a55d2ccdf85fc6ebad2f.tar.gz |
Merge branch 'minimal-fix-for-artifacts-service' into 'master'
Minimal fix for artifacts service
Closes #43022
See merge request gitlab-org/gitlab-ce!17313
Diffstat (limited to 'app')
-rw-r--r-- | app/services/ci/create_trace_artifact_service.rb | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/app/services/ci/create_trace_artifact_service.rb b/app/services/ci/create_trace_artifact_service.rb index 280a2c3afa4..ffde824972c 100644 --- a/app/services/ci/create_trace_artifact_service.rb +++ b/app/services/ci/create_trace_artifact_service.rb @@ -4,13 +4,33 @@ module Ci return if job.job_artifacts_trace job.trace.read do |stream| - if stream.file? - job.create_job_artifacts_trace!( - project: job.project, - file_type: :trace, - file: stream) + break unless stream.file? + + clone_file!(stream.path, JobArtifactUploader.workhorse_upload_path) do |clone_path| + create_job_trace!(job, clone_path) + FileUtils.rm(stream.path) end end end + + private + + def create_job_trace!(job, path) + File.open(path) do |stream| + job.create_job_artifacts_trace!( + project: job.project, + file_type: :trace, + file: stream) + end + end + + def clone_file!(src_path, temp_dir) + FileUtils.mkdir_p(temp_dir) + Dir.mktmpdir('tmp-trace', temp_dir) do |dir_path| + temp_path = File.join(dir_path, "job.log") + FileUtils.copy(src_path, temp_path) + yield(temp_path) + end + end end end |