summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil TrzciƄski <ayufan@ayufan.eu>2018-02-23 13:07:25 +0100
committerShinya Maeda <shinya@gitlab.com>2018-02-23 22:30:04 +0900
commit801e42715c801c8460849a8ae18a3272515f36ab (patch)
tree7d9e20f27152f6dcad8cd8e6bab92720e7144861
parent58a312f5097b30a93100de93d06427402d514b48 (diff)
downloadgitlab-ce-801e42715c801c8460849a8ae18a3272515f36ab.tar.gz
Minimal fix for artifacts service
-rw-r--r--app/services/ci/create_trace_artifact_service.rb31
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