diff options
Diffstat (limited to 'app/services/ci/expire_pipeline_cache_service.rb')
-rw-r--r-- | app/services/ci/expire_pipeline_cache_service.rb | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/app/services/ci/expire_pipeline_cache_service.rb b/app/services/ci/expire_pipeline_cache_service.rb index 8343e0f8cd0..2ae60907dab 100644 --- a/app/services/ci/expire_pipeline_cache_service.rb +++ b/app/services/ci/expire_pipeline_cache_service.rb @@ -2,6 +2,11 @@ module Ci class ExpirePipelineCacheService + class UrlHelpers + include ::Gitlab::Routing + include ::GitlabRoutingHelper + end + def execute(pipeline, delete: false) store = Gitlab::EtagCaching::Store.new @@ -17,27 +22,27 @@ module Ci private def project_pipelines_path(project) - Gitlab::Routing.url_helpers.project_pipelines_path(project, format: :json) + url_helpers.project_pipelines_path(project, format: :json) end def project_pipeline_path(project, pipeline) - Gitlab::Routing.url_helpers.project_pipeline_path(project, pipeline, format: :json) + url_helpers.project_pipeline_path(project, pipeline, format: :json) end def commit_pipelines_path(project, commit) - Gitlab::Routing.url_helpers.pipelines_project_commit_path(project, commit.id, format: :json) + url_helpers.pipelines_project_commit_path(project, commit.id, format: :json) end def new_merge_request_pipelines_path(project) - Gitlab::Routing.url_helpers.project_new_merge_request_path(project, format: :json) + url_helpers.project_new_merge_request_path(project, format: :json) end def pipelines_project_merge_request_path(merge_request) - Gitlab::Routing.url_helpers.pipelines_project_merge_request_path(merge_request.target_project, merge_request, format: :json) + url_helpers.pipelines_project_merge_request_path(merge_request.target_project, merge_request, format: :json) end def merge_request_widget_path(merge_request) - Gitlab::Routing.url_helpers.cached_widget_project_json_merge_request_path(merge_request.project, merge_request, format: :json) + url_helpers.cached_widget_project_json_merge_request_path(merge_request.project, merge_request, format: :json) end def each_pipelines_merge_request_path(pipeline) @@ -47,6 +52,10 @@ module Ci end end + def graphql_pipeline_path(pipeline) + url_helpers.graphql_etag_pipeline_path(pipeline) + end + # Updates ETag caches of a pipeline. # # This logic resides in a separate method so that EE can more easily extend @@ -58,14 +67,20 @@ module Ci project = pipeline.project store.touch(project_pipelines_path(project)) - store.touch(project_pipeline_path(project, pipeline)) store.touch(commit_pipelines_path(project, pipeline.commit)) unless pipeline.commit.nil? store.touch(new_merge_request_pipelines_path(project)) each_pipelines_merge_request_path(pipeline) do |path| store.touch(path) end + + pipeline.self_with_ancestors_and_descendants.each do |relative_pipeline| + store.touch(project_pipeline_path(relative_pipeline.project, relative_pipeline)) + store.touch(graphql_pipeline_path(relative_pipeline)) + end + end + + def url_helpers + @url_helpers ||= UrlHelpers.new end end end - -Ci::ExpirePipelineCacheService.prepend_if_ee('EE::Ci::ExpirePipelineCacheService') |