diff options
author | Kamil TrzciĆski <ayufan@ayufan.eu> | 2018-02-23 13:07:25 +0100 |
---|---|---|
committer | Shinya Maeda <shinya@gitlab.com> | 2018-02-23 22:30:04 +0900 |
commit | 801e42715c801c8460849a8ae18a3272515f36ab (patch) | |
tree | 7d9e20f27152f6dcad8cd8e6bab92720e7144861 /app | |
parent | 58a312f5097b30a93100de93d06427402d514b48 (diff) | |
download | gitlab-ce-801e42715c801c8460849a8ae18a3272515f36ab.tar.gz |
Minimal fix for artifacts service
Diffstat (limited to 'app')
-rw-r--r-- | app/services/ci/create_trace_artifact_service.rb | 31 |
1 files changed, 26 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..bfc5c1c0732 100644 --- a/app/services/ci/create_trace_artifact_service.rb +++ b/app/services/ci/create_trace_artifact_service.rb @@ -4,13 +4,34 @@ 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) + return unless stream.file? + + temp_file!(JobArtifactUploader.workhorse_upload_path) do |temp_path| + FileUtils.cp(stream.path, temp_path) + create_job_trace!(temp_path) + FileUtils.rm(stream.path) end end end + + private + + def create_job_trace!(path) + job.create_job_artifacts_trace!( + project: job.project, + file_type: :trace, + file: UploadedFile.new(path, 'build.log', 'application/octet-stream') + ) + end + + def temp_file!(temp_dir) + FileUtils.mkdir_p(temp_dir) + temp_file = Tempfile.new('file', temp_dir) + temp_file&.close + yield(temp_file.path) + ensure + temp_file&.close + temp_file&.unlink + end end end |