Introduce Projects::ArtifactsController#search:
So we redirect from ref and build_name to the particular build, namely: * /u/r/artifacts/ref/build_name/* -> /u/r/builds/:build_id/artifacts/* For: * download * browse * file
This commit is contained in:
parent
8f469c33cc
commit
f601ec54fc
2 changed files with 28 additions and 2 deletions
|
@ -35,14 +35,34 @@ class Projects::ArtifactsController < Projects::ApplicationController
|
|||
redirect_to namespace_project_build_path(project.namespace, project, build)
|
||||
end
|
||||
|
||||
def search
|
||||
url = namespace_project_build_url(project.namespace, project, build)
|
||||
|
||||
if params[:path]
|
||||
redirect_to "#{url}/artifacts/#{params[:path]}"
|
||||
else
|
||||
render_404
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def validate_artifacts!
|
||||
render_404 unless build.artifacts?
|
||||
render_404 unless build && build.artifacts?
|
||||
end
|
||||
|
||||
def build
|
||||
@build ||= project.builds.find_by!(id: params[:build_id])
|
||||
@build ||= build_from_id || build_from_ref
|
||||
end
|
||||
|
||||
def build_from_id
|
||||
project.builds.find_by(id: params[:build_id]) if params[:build_id]
|
||||
end
|
||||
|
||||
def build_from_ref
|
||||
if params[:ref]
|
||||
project.builds_for(params[:build_name], params[:ref]).latest.first
|
||||
end
|
||||
end
|
||||
|
||||
def artifacts_file
|
||||
|
|
|
@ -733,6 +733,12 @@ Rails.application.routes.draw do
|
|||
|
||||
resources :environments, only: [:index, :show, :new, :create, :destroy]
|
||||
|
||||
resources :artifacts, only: [] do
|
||||
collection do
|
||||
get :search, path: ':ref/:build_name(/*path)', format: false
|
||||
end
|
||||
end
|
||||
|
||||
resources :builds, only: [:index, :show], constraints: { id: /\d+/ } do
|
||||
collection do
|
||||
post :cancel_all
|
||||
|
|
Loading…
Reference in a new issue