diff options
author | Shinya Maeda <shinya@gitlab.com> | 2018-02-26 23:06:04 +0900 |
---|---|---|
committer | Shinya Maeda <shinya@gitlab.com> | 2018-03-06 21:43:19 +0900 |
commit | 32c1501d69d1618452e0088b343a6806769d79a9 (patch) | |
tree | 470240815db1a615ec65996cb38e0e423dae7f34 | |
parent | f0d7a2ffc419e5e4893f9161c008d4ead5d3a660 (diff) | |
download | gitlab-ce-32c1501d69d1618452e0088b343a6806769d79a9.tar.gz |
Add rake task. Adopt the latest fix. Drop CreateTraceArtifactService
-rw-r--r-- | app/services/ci/create_trace_artifact_service.rb | 36 | ||||
-rw-r--r-- | app/workers/archive_legacy_trace_worker.rb | 10 | ||||
-rw-r--r-- | app/workers/create_trace_artifact_worker.rb | 4 | ||||
-rw-r--r-- | lib/gitlab/ci/trace.rb | 34 | ||||
-rw-r--r-- | lib/tasks/gitlab/traces.rake | 17 |
5 files changed, 50 insertions, 51 deletions
diff --git a/app/services/ci/create_trace_artifact_service.rb b/app/services/ci/create_trace_artifact_service.rb deleted file mode 100644 index ffde824972c..00000000000 --- a/app/services/ci/create_trace_artifact_service.rb +++ /dev/null @@ -1,36 +0,0 @@ -module Ci - class CreateTraceArtifactService < BaseService - def execute(job) - return if job.job_artifacts_trace - - job.trace.read do |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 diff --git a/app/workers/archive_legacy_trace_worker.rb b/app/workers/archive_legacy_trace_worker.rb new file mode 100644 index 00000000000..01b6224494b --- /dev/null +++ b/app/workers/archive_legacy_trace_worker.rb @@ -0,0 +1,10 @@ +class ArchiveLegacyTraceWorker + include ApplicationWorker + include ObjectStorageQueue + + def perform(job_id) + Ci::Build.find_by(id: job_id).try do |job| + job.trace.archive! + end + end +end diff --git a/app/workers/create_trace_artifact_worker.rb b/app/workers/create_trace_artifact_worker.rb index 3283e8d79f0..a0cec43157e 100644 --- a/app/workers/create_trace_artifact_worker.rb +++ b/app/workers/create_trace_artifact_worker.rb @@ -2,10 +2,8 @@ class CreateTraceArtifactWorker include ApplicationWorker include PipelineQueue - # TODO: this worker should use BackgroundMigration or ObjectStorage queue - def perform(job_id) - Ci::Build.preload(:project, :user).find_by(id: job_id).try do |job| + Ci::Build.find_by(id: job_id).try do |job| job.trace.archive! end end diff --git a/lib/gitlab/ci/trace.rb b/lib/gitlab/ci/trace.rb index defc8160121..ef5e7fcac23 100644 --- a/lib/gitlab/ci/trace.rb +++ b/lib/gitlab/ci/trace.rb @@ -112,18 +112,28 @@ module Gitlab private def archive_stream!(stream) - file = Tempfile.new('trace.log') - size = IO.copy_stream(file, stream) - raise 'Not all saved' unless size == stream.size - file.close - - job.create_job_artifacts_trace!( - project: job.project, - file_type: :trace, - file: file) - ensure - file&.close - file&.unlink + clone_file!(stream, JobArtifactUploader.workhorse_upload_path) do |clone_path| + create_job_trace!(job, clone_path) + end + end + + def clone_file!(src_stream, temp_dir) + FileUtils.mkdir_p(temp_dir) + Dir.mktmpdir('tmp-trace', temp_dir) do |dir_path| + temp_path = File.join(dir_path, "job.log") + size = IO.write(src_stream, temp_path) + raise 'Not all saved' unless size == src_stream.size + yield(temp_path) + end + end + + 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 ensure_path diff --git a/lib/tasks/gitlab/traces.rake b/lib/tasks/gitlab/traces.rake new file mode 100644 index 00000000000..f45edc922aa --- /dev/null +++ b/lib/tasks/gitlab/traces.rake @@ -0,0 +1,17 @@ +require 'logger' +require 'resolv-replace' + +desc "GitLab | Archive legacy traces to trace artifacts" +namespace :gitlab do + namespace :traces do + task archive: :environment do + logger = Logger.new(STDOUT) + logger.info('Archiving legacy traces') + + job_ids = Ci::Build.complete.without_trace_artifact.pluck(:id) + job_ids = job_ids.map { |build_id| [build_id] } + + ArchiveLegacyTraceWorker.bulk_perform_async(job_ids) + end + end +end |