From 5f6d826165aa975735cd543dba2b91999c115545 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Sat, 27 Jan 2018 02:00:29 +0900 Subject: Add CreateArtifactsTraceWorker --- app/services/ci/create_artifacts_trace_service.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 app/services/ci/create_artifacts_trace_service.rb (limited to 'app/services') diff --git a/app/services/ci/create_artifacts_trace_service.rb b/app/services/ci/create_artifacts_trace_service.rb new file mode 100644 index 00000000000..eefc2ae13ea --- /dev/null +++ b/app/services/ci/create_artifacts_trace_service.rb @@ -0,0 +1,16 @@ +module Ci + class CreateArtifactsTraceService < BaseService + def execute(job_id) + Ci::Build.find_by(id: job_id).try do |job| + return if job.job_artifacts_trace + + job.trace.read do |stream| + job.create_job_artifacts_trace!( + project: job.project, + file_type: :trace, + file: stream.path) if stream.file? + end + end + end + end +end -- cgit v1.2.1 From abc64da90cc4341607b48c09b0920296b5fb9663 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 29 Jan 2018 00:03:22 +0900 Subject: Rename CreateArtifactsTraceService to CreateTraceArtifactService --- app/services/ci/create_artifacts_trace_service.rb | 16 ---------------- app/services/ci/create_trace_artifact_service.rb | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 16 deletions(-) delete mode 100644 app/services/ci/create_artifacts_trace_service.rb create mode 100644 app/services/ci/create_trace_artifact_service.rb (limited to 'app/services') diff --git a/app/services/ci/create_artifacts_trace_service.rb b/app/services/ci/create_artifacts_trace_service.rb deleted file mode 100644 index eefc2ae13ea..00000000000 --- a/app/services/ci/create_artifacts_trace_service.rb +++ /dev/null @@ -1,16 +0,0 @@ -module Ci - class CreateArtifactsTraceService < BaseService - def execute(job_id) - Ci::Build.find_by(id: job_id).try do |job| - return if job.job_artifacts_trace - - job.trace.read do |stream| - job.create_job_artifacts_trace!( - project: job.project, - file_type: :trace, - file: stream.path) if stream.file? - end - end - end - end -end diff --git a/app/services/ci/create_trace_artifact_service.rb b/app/services/ci/create_trace_artifact_service.rb new file mode 100644 index 00000000000..80e41856719 --- /dev/null +++ b/app/services/ci/create_trace_artifact_service.rb @@ -0,0 +1,14 @@ +module Ci + class CreateTraceArtifactService < BaseService + def execute(job) + return if job.job_artifacts_trace + + job.trace.read do |stream| + job.create_job_artifacts_trace!( + project: job.project, + file_type: :trace, + file: stream.path) if stream.file? + end + end + end +end -- cgit v1.2.1 From 93386411a0e304293a962f123d84d127fecd6ffb Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 29 Jan 2018 00:39:17 +0900 Subject: Add worker queue --- app/services/ci/create_trace_artifact_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/services') diff --git a/app/services/ci/create_trace_artifact_service.rb b/app/services/ci/create_trace_artifact_service.rb index 80e41856719..a92ce1a4d52 100644 --- a/app/services/ci/create_trace_artifact_service.rb +++ b/app/services/ci/create_trace_artifact_service.rb @@ -7,7 +7,7 @@ module Ci job.create_job_artifacts_trace!( project: job.project, file_type: :trace, - file: stream.path) if stream.file? + file: stream) if stream.file? end end end -- cgit v1.2.1 From edc936cde2730bb7c417343c582f2b8cf5b571c3 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 29 Jan 2018 18:00:53 +0900 Subject: Fix inital test failures --- app/services/ci/create_trace_artifact_service.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'app/services') diff --git a/app/services/ci/create_trace_artifact_service.rb b/app/services/ci/create_trace_artifact_service.rb index a92ce1a4d52..280a2c3afa4 100644 --- a/app/services/ci/create_trace_artifact_service.rb +++ b/app/services/ci/create_trace_artifact_service.rb @@ -4,10 +4,12 @@ module Ci return if job.job_artifacts_trace job.trace.read do |stream| - job.create_job_artifacts_trace!( - project: job.project, - file_type: :trace, - file: stream) if stream.file? + if stream.file? + job.create_job_artifacts_trace!( + project: job.project, + file_type: :trace, + file: stream) + end end end end -- cgit v1.2.1 From 0ecd759d73abaee5c08adbd8ab3db651c2522b14 Mon Sep 17 00:00:00 2001 From: Winnie Hellmann Date: Mon, 29 Jan 2018 20:49:00 +0100 Subject: Replace "cluster" with "Kubernetes cluster" --- app/services/clusters/create_service.rb | 2 +- app/services/clusters/gcp/verify_provision_status_service.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'app/services') diff --git a/app/services/clusters/create_service.rb b/app/services/clusters/create_service.rb index 0471b0f17a2..418888e3293 100644 --- a/app/services/clusters/create_service.rb +++ b/app/services/clusters/create_service.rb @@ -5,7 +5,7 @@ module Clusters def execute(access_token = nil) @access_token = access_token - raise ArgumentError.new('Instance does not support multiple clusters') unless can_create_cluster? + raise ArgumentError.new(_('Instance does not support multiple Kubernetes clusters')) unless can_create_cluster? create_cluster.tap do |cluster| ClusterProvisionWorker.perform_async(cluster.id) if cluster.persisted? diff --git a/app/services/clusters/gcp/verify_provision_status_service.rb b/app/services/clusters/gcp/verify_provision_status_service.rb index bc33756f27c..f994aacd086 100644 --- a/app/services/clusters/gcp/verify_provision_status_service.rb +++ b/app/services/clusters/gcp/verify_provision_status_service.rb @@ -28,7 +28,7 @@ module Clusters if elapsed_time_from_creation(operation) < TIMEOUT WaitForClusterCreationWorker.perform_in(EAGER_INTERVAL, provider.cluster_id) else - provider.make_errored!("Cluster creation time exceeds timeout; #{TIMEOUT}") + provider.make_errored!(_('Kubernetes cluster creation time exceeds timeout; %{timeout}') % { timeout: TIMEOUT }) end end -- cgit v1.2.1 From d2a77094ae4a44b63fbe22ca910e836cb336a729 Mon Sep 17 00:00:00 2001 From: James Edwards-Jones Date: Thu, 11 Jan 2018 23:12:34 +0000 Subject: File upload UI obeys LFS filters Uses Lfs::FileModificationHandler to coordinate LFS detection, creation of LfsObject, etc Caveats: 1. This isn't used by the multi-file editor / Web IDE 2. This isn't used on rename. We'd need to be able to download LFS files and add them to the commit if they no longer match so not as simple. 3. We only check the root .gitattributes file, so this should be improved to correctly check for nested .gitattributes files in subfolders. --- app/services/files/create_service.rb | 12 +++++++- app/services/lfs/file_modification_handler.rb | 42 +++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 app/services/lfs/file_modification_handler.rb (limited to 'app/services') diff --git a/app/services/files/create_service.rb b/app/services/files/create_service.rb index 00a8dcf0934..46acdc5406c 100644 --- a/app/services/files/create_service.rb +++ b/app/services/files/create_service.rb @@ -1,10 +1,20 @@ module Files class CreateService < Files::BaseService def create_commit! + handler = Lfs::FileModificationHandler.new(project, @branch_name) + + handler.new_file(@file_path, @file_content) do |content_or_lfs_pointer| + create_transformed_commit(content_or_lfs_pointer) + end + end + + private + + def create_transformed_commit(content_or_lfs_pointer) repository.create_file( current_user, @file_path, - @file_content, + content_or_lfs_pointer, message: @commit_message, branch_name: @branch_name, author_email: @author_email, diff --git a/app/services/lfs/file_modification_handler.rb b/app/services/lfs/file_modification_handler.rb new file mode 100644 index 00000000000..fe9091a6e5d --- /dev/null +++ b/app/services/lfs/file_modification_handler.rb @@ -0,0 +1,42 @@ +module Lfs + class FileModificationHandler + attr_reader :project, :branch_name + + delegate :repository, to: :project + + def initialize(project, branch_name) + @project = project + @branch_name = branch_name + end + + def new_file(file_path, file_content) + if project.lfs_enabled? && lfs_file?(file_path) + lfs_pointer_file = Gitlab::Git::LfsPointerFile.new(file_content) + lfs_object = create_lfs_object!(lfs_pointer_file, file_content) + content = lfs_pointer_file.pointer + + success = yield(content) + + link_lfs_object!(lfs_object) if success + else + yield(file_content) + end + end + + private + + def lfs_file?(file_path) + repository.attributes_at(branch_name, file_path)['filter'] == 'lfs' + end + + def create_lfs_object!(lfs_pointer_file, file_content) + LfsObject.find_or_create_by(oid: lfs_pointer_file.sha256, size: lfs_pointer_file.size) do |lfs_object| + lfs_object.file = CarrierWaveStringFile.new(file_content) + end + end + + def link_lfs_object!(lfs_object) + project.lfs_objects << lfs_object + end + end +end -- cgit v1.2.1