Skip to content
Snippets Groups Projects
Commit 9a507663 authored by Alessio Caiazza's avatar Alessio Caiazza
Browse files

Show modified and added public paths in MR

parent 89eeceb7
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -20,4 +20,23 @@ class EnvironmentStatus
def deployed_at
deployment.try(:created_at)
end
PAGE_EXTENSIONS = /(^$|^\.(s?html?|php|asp|cgi|pl)$)/i.freeze
def changes
sha = merge_request.diff_head_sha
return [] if project.route_map_for(sha).nil?
merge_request.merge_request_diff.merge_request_diff_files.where(deleted_file: false).map do |file|
public_path = project.public_path_for_source_path(file.new_path, sha)
next if public_path.nil?
next unless File.extname(public_path) =~ PAGE_EXTENSIONS
{
path: public_path,
external_url: environment.external_url_for(file.new_path, sha)
}
end.compact
end
end
Loading
Loading
@@ -36,6 +36,8 @@ class EnvironmentStatusEntity < Grape::Entity
es.deployment.try(:formatted_deployment_time)
end
 
expose :changes, if: ->(*) { Feature.enabled?(:ci_environments_status_changes, project) }
private
 
def environment
Loading
Loading
Loading
Loading
@@ -37,4 +37,32 @@ describe EnvironmentStatus do
environment_status.deployed_at
end
end
# $ git diff --stat pages-deploy-target...pages-deploy
# .gitlab/route-map.yml | 5 +++++
# files/html/500.html | 13 -------------
# files/html/page.html | 3 +++
# files/js/application.js | 3 +++
# files/markdown/ruby-style-guide.md | 4 ++++
# pages-deploy.txt | 1 +
#
# $ cat .gitlab/route-map.yml
# - source: /files\/markdown\/(.+)\.md$/
# public: '\1.html'
#
# - source: /files\/(.+)/
# public: '\1'
describe '#changes' do
it 'contains only added and modified public pages' do
expect(environment_status.changes).to contain_exactly(
{
path: 'ruby-style-guide.html',
external_url: "#{environment.external_url}/ruby-style-guide.html"
}, {
path: 'html/page.html',
external_url: "#{environment.external_url}/html/page.html"
}
)
end
end
end
Loading
Loading
@@ -25,11 +25,20 @@ describe EnvironmentStatusEntity do
it { is_expected.to include(:external_url_formatted) }
it { is_expected.to include(:deployed_at) }
it { is_expected.to include(:deployed_at_formatted) }
it { is_expected.to include(:changes) }
 
it { is_expected.not_to include(:stop_url) }
it { is_expected.not_to include(:metrics_url) }
it { is_expected.not_to include(:metrics_monitoring_url) }
 
context 'when :ci_environments_status_changes feature flag is disabled' do
before do
stub_feature_flags(ci_environments_status_changes: false)
end
it { is_expected.not_to include(:changes) }
end
context 'when the user is project maintainer' do
before do
project.add_maintainer(user)
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment