diff options
author | Lin Jen-Shin <godfat@godfat.org> | 2016-07-05 22:58:38 +0800 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2016-07-05 22:58:38 +0800 |
commit | 28e324ae67821e19159d66a554065ae11fcfb42c (patch) | |
tree | fdc179b9e0e0100fd4071be787b30e7592b5bf28 | |
parent | 1a36493d134328fa5b9ac3d3a04e43e72bdf67bb (diff) | |
download | gitlab-ce-28e324ae67821e19159d66a554065ae11fcfb42c.tar.gz |
Use Gitlab-Workhorse-Send-Data to send entry:
Closes #19224, Closes #19128
Also requires this MR to work:
https://gitlab.com/gitlab-org/gitlab-workhorse/merge_requests/53
-rw-r--r-- | app/controllers/projects/artifacts_controller.rb | 3 | ||||
-rw-r--r-- | app/helpers/workhorse_helper.rb | 6 | ||||
-rw-r--r-- | lib/gitlab/workhorse.rb | 12 |
3 files changed, 19 insertions, 2 deletions
diff --git a/app/controllers/projects/artifacts_controller.rb b/app/controllers/projects/artifacts_controller.rb index f11c8321464..c6363999670 100644 --- a/app/controllers/projects/artifacts_controller.rb +++ b/app/controllers/projects/artifacts_controller.rb @@ -23,8 +23,7 @@ class Projects::ArtifactsController < Projects::ApplicationController entry = build.artifacts_metadata_entry(params[:path]) if entry.exists? - render json: { archive: build.artifacts_file.path, - entry: Base64.encode64(entry.path) } + send_artifacts_entry(build, entry) else render json: {}, status: 404 end diff --git a/app/helpers/workhorse_helper.rb b/app/helpers/workhorse_helper.rb index 2bd0dbfd095..c582f16eb01 100644 --- a/app/helpers/workhorse_helper.rb +++ b/app/helpers/workhorse_helper.rb @@ -21,4 +21,10 @@ module WorkhorseHelper headers.store(*Gitlab::Workhorse.send_git_archive(repository, ref: ref, format: format)) head :ok end + + # Send an entry from artifacts through Workhorse + def send_artifacts_entry(build, entry) + headers.store(*Gitlab::Workhorse.send_artifacts_entry(build, entry)) + head :ok + end end diff --git a/lib/gitlab/workhorse.rb b/lib/gitlab/workhorse.rb index ef1241f8600..ed1c5da0b3c 100644 --- a/lib/gitlab/workhorse.rb +++ b/lib/gitlab/workhorse.rb @@ -65,6 +65,18 @@ module Gitlab ] end + def send_artifacts_entry(build, entry) + params = { + 'Archive' => build.artifacts_file.path, + 'Entry' => Base64.encode64(entry.path) + } + + [ + SEND_DATA_HEADER, + "artifacts-entry:#{encode(params)}" + ] + end + protected def encode(hash) |