Skip to content
Snippets Groups Projects
Commit 63a9d582 authored by Shinya Maeda's avatar Shinya Maeda
Browse files

Trace as artifacts

parent 84bda43a
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -21,6 +21,7 @@ module Ci
has_many :job_artifacts, class_name: 'Ci::JobArtifact', foreign_key: :job_id, dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent
has_one :job_artifacts_archive, -> { where(file_type: Ci::JobArtifact.file_types[:archive]) }, class_name: 'Ci::JobArtifact', inverse_of: :job, foreign_key: :job_id
has_one :job_artifacts_metadata, -> { where(file_type: Ci::JobArtifact.file_types[:metadata]) }, class_name: 'Ci::JobArtifact', inverse_of: :job, foreign_key: :job_id
has_one :job_artifacts_trace, -> { where(file_type: Ci::JobArtifact.file_types[:trace]) }, class_name: 'Ci::JobArtifact', inverse_of: :job, foreign_key: :job_id
 
# The "environment" field for builds is a String, and is the unexpanded name
def persisted_environment
Loading
Loading
Loading
Loading
@@ -9,9 +9,12 @@ module Ci
 
mount_uploader :file, JobArtifactUploader
 
delegate :open, :exists?, to: :file
enum file_type: {
archive: 1,
metadata: 2
metadata: 2,
trace: 3
}
 
def self.artifacts_size_for(project)
Loading
Loading
Loading
Loading
@@ -13,6 +13,10 @@ class JobArtifactUploader < GitlabUploader
dynamic_segment
end
 
def open
File.open(path, "rb")
end
private
 
def dynamic_segment
Loading
Loading
Loading
Loading
@@ -120,7 +120,16 @@ module API
put '/:id' do
job = authenticate_job!
 
job.trace.set(params[:trace]) if params[:trace]
if params[:trace]
# Overwrite live-trace by full-trace
job.trace.set(params[:trace])
# Move full-trace to JobArtifactUploader#default_path
job.build_job_artifacts_trace(
project: job.project,
file_type: :trace,
file: UploadedFile.new(job.trace.current_path, 'trace.log'))
end
 
Gitlab::Metrics.add_event(:update_build,
project: job.project.full_path)
Loading
Loading
Loading
Loading
@@ -52,12 +52,14 @@ module Gitlab
end
 
def exist?
current_path.present? || old_trace.present?
trace_artifact&.exists? || current_path.present? || old_trace.present?
end
 
def read
stream = Gitlab::Ci::Trace::Stream.new do
if current_path
if trace_artifact
trace_artifact.open
elsif current_path
File.open(current_path, "rb")
elsif old_trace
StringIO.new(old_trace)
Loading
Loading
@@ -104,12 +106,6 @@ module Gitlab
end
end
 
def current_path
@current_path ||= paths.find do |trace_path|
File.exist?(trace_path)
end
end
def paths
[
default_path,
Loading
Loading
@@ -117,6 +113,12 @@ module Gitlab
].compact
end
 
def current_path
@current_path ||= paths.find do |trace_path|
File.exist?(trace_path)
end
end
def default_directory
File.join(
Settings.gitlab_ci.builds_path,
Loading
Loading
@@ -137,6 +139,10 @@ module Gitlab
"#{job.id}.log"
) if job.project&.ci_id
end
def trace_artifact
job.job_artifacts_trace
end
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment