Trace as artifacts
This commit is contained in:
parent
84bda43a3c
commit
63a9d582aa
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -13,6 +13,10 @@ class JobArtifactUploader < GitlabUploader
|
|||
dynamic_segment
|
||||
end
|
||||
|
||||
def open
|
||||
File.open(path, "rb")
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def dynamic_segment
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue