diff options
author | Grzegorz Bizon <grzegorz@gitlab.com> | 2017-10-21 18:26:31 +0000 |
---|---|---|
committer | Winnie Hellmann <winnie@gitlab.com> | 2017-10-21 19:16:58 +0000 |
commit | 8adaa54afa277f24ecae59f1c8c0feb94bd38c03 (patch) | |
tree | 0cd16faf3298d1176f7a385c4ffba9b4efa7b0af | |
parent | 954c116f0d153828f975c9a2269ced5de094b8f2 (diff) | |
download | gitlab-ce-8adaa54afa277f24ecae59f1c8c0feb94bd38c03.tar.gz |
Merge branch '39189-online-view-of-html-artifacts-is-broken' into 'master'
Resolve "Online view of HTML artifacts is broken?"
Closes #39189
See merge request gitlab-org/gitlab-ce!14977
(cherry picked from commit cfd97f7ebedec56ccf979e21997dfa19e0807205)
3c0be3cd Fix the external URLs generated for online view of HTML artifacts
-rw-r--r-- | app/models/ci/artifact_blob.rb | 17 | ||||
-rw-r--r-- | changelogs/unreleased/39189-online-view-of-html-artifacts-is-broken.yml | 5 | ||||
-rw-r--r-- | spec/models/ci/artifact_blob_spec.rb | 7 |
3 files changed, 19 insertions, 10 deletions
diff --git a/app/models/ci/artifact_blob.rb b/app/models/ci/artifact_blob.rb index 8b66531ec7b..ec56cc53aea 100644 --- a/app/models/ci/artifact_blob.rb +++ b/app/models/ci/artifact_blob.rb @@ -2,7 +2,7 @@ module Ci class ArtifactBlob include BlobLike - EXTENTIONS_SERVED_BY_PAGES = %w[.html .htm .txt .json].freeze + EXTENSIONS_SERVED_BY_PAGES = %w[.html .htm .txt .json].freeze attr_reader :entry @@ -36,17 +36,22 @@ module Ci def external_url(project, job) return unless external_link?(job) - components = project.full_path_components - components << "-/jobs/#{job.id}/artifacts/file/#{path}" - artifact_path = components[1..-1].join('/') + full_path_parts = project.full_path_components + top_level_group = full_path_parts.shift - "#{pages_config.protocol}://#{components[0]}.#{pages_config.host}/#{artifact_path}" + artifact_path = [ + '-', *full_path_parts, '-', + 'jobs', job.id, + 'artifacts', path + ].join('/') + + "#{pages_config.protocol}://#{top_level_group}.#{pages_config.host}/#{artifact_path}" end def external_link?(job) pages_config.enabled && pages_config.artifacts_server && - EXTENTIONS_SERVED_BY_PAGES.include?(File.extname(name)) && + EXTENSIONS_SERVED_BY_PAGES.include?(File.extname(name)) && job.project.public? end diff --git a/changelogs/unreleased/39189-online-view-of-html-artifacts-is-broken.yml b/changelogs/unreleased/39189-online-view-of-html-artifacts-is-broken.yml new file mode 100644 index 00000000000..3e6ec40a28c --- /dev/null +++ b/changelogs/unreleased/39189-online-view-of-html-artifacts-is-broken.yml @@ -0,0 +1,5 @@ +--- +title: Fix the external URLs generated for online view of HTML artifacts +merge_request: 14977 +author: +type: fixed diff --git a/spec/models/ci/artifact_blob_spec.rb b/spec/models/ci/artifact_blob_spec.rb index d5ba088af53..4e72d9d748e 100644 --- a/spec/models/ci/artifact_blob_spec.rb +++ b/spec/models/ci/artifact_blob_spec.rb @@ -56,15 +56,14 @@ describe Ci::ArtifactBlob do end context 'txt extensions' do - let(:entry) { build.artifacts_metadata_entry('other_artifacts_0.1.2/doc_sample.txt') } + let(:path) { 'other_artifacts_0.1.2/doc_sample.txt' } + let(:entry) { build.artifacts_metadata_entry(path) } it 'returns a URL' do url = subject.external_url(build.project, build) expect(url).not_to be_nil - expect(url).to start_with("http") - expect(url).to match Gitlab.config.pages.host - expect(url).to end_with(entry.path) + expect(url).to eq("http://#{project.namespace.path}.#{Gitlab.config.pages.host}/-/#{project.path}/-/jobs/#{build.id}/artifacts/#{path}") end end end |