summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/ci/api/builds.rb20
-rw-r--r--lib/ci/api/entities.rb1
2 files changed, 17 insertions, 4 deletions
diff --git a/lib/ci/api/builds.rb b/lib/ci/api/builds.rb
index 15faa6edd84..2aaa06a022c 100644
--- a/lib/ci/api/builds.rb
+++ b/lib/ci/api/builds.rb
@@ -78,11 +78,15 @@ module Ci
# Parameters:
# id (required) - The ID of a build
# token (required) - The build authorization token
- # file (required) - The uploaded file
+ # file (required) - Artifacts file
+ # metadata (optional) - Artifacts metadata file
# Parameters (accelerated by GitLab Workhorse):
# file.path - path to locally stored body (generated by Workhorse)
# file.name - real filename as send in Content-Disposition
# file.type - real content type as send in Content-Type
+ # metadata.path - path to locally stored body (generated by Workhorse)
+ # metadata.name - real filename as send in Content-Disposition
+ # metadata.type - real content type as send in Content-Type
# Headers:
# BUILD-TOKEN (required) - The build authorization token, the same as token
# Body:
@@ -98,10 +102,17 @@ module Ci
authenticate_build_token!(build)
forbidden!('build is not running') unless build.running?
- file = uploaded_file!(:file, ArtifactUploader.artifacts_upload_path)
- file_to_large! unless file.size < max_artifacts_size
+ artifacts_upload_path = ArtifactUploader.artifacts_upload_path
+ artifacts = uploaded_file!(:file, artifacts_upload_path)
+ file_to_large! unless artifacts.size < max_artifacts_size
+ artifacts_attributes = { artifacts_file: artifacts }
- if build.update_attributes(artifacts_file: file)
+ if params[:metadata] || params['metadata.path'.to_sym]
+ metadata = uploaded_file!(:metadata, artifacts_upload_path)
+ artifacts_attributes.store(:artifacts_metadata, metadata)
+ end
+
+ if build.update_attributes(artifacts_attributes)
present build, with: Entities::Build
else
render_validation_error!(build)
@@ -148,6 +159,7 @@ module Ci
not_found! unless build
authenticate_build_token!(build)
build.remove_artifacts_file!
+ build.remove_artifacts_metadata!
end
end
end
diff --git a/lib/ci/api/entities.rb b/lib/ci/api/entities.rb
index e4ac0545ea2..dd34c661e25 100644
--- a/lib/ci/api/entities.rb
+++ b/lib/ci/api/entities.rb
@@ -31,6 +31,7 @@ module Ci
expose :variables
expose :artifacts_file, using: ArtifactFile
+ expose :artifacts_metadata, using: ArtifactFile
end
class Runner < Grape::Entity