Commit a5347fe5 authored by Kamil Trzciński's avatar Kamil Trzciński

Merge branch '30237-pipelines-actions-make-2-requests' into 'master'

Resolve: "Pipelines: When we retry a pipeline 2 requests are made to the pipelines endpoint"

Closes #30237

See merge request !10584
parents 07eac529 4f3dc19a
...@@ -40,6 +40,6 @@ export default class PipelinesService { ...@@ -40,6 +40,6 @@ export default class PipelinesService {
* @return {Promise} * @return {Promise}
*/ */
postAction(endpoint) { postAction(endpoint) {
return Vue.http.post(endpoint, {}, { emulateJSON: true }); return Vue.http.post(`${endpoint}.json`);
} }
} }
...@@ -6,6 +6,8 @@ class Projects::PipelinesController < Projects::ApplicationController ...@@ -6,6 +6,8 @@ class Projects::PipelinesController < Projects::ApplicationController
before_action :authorize_update_pipeline!, only: [:retry, :cancel] before_action :authorize_update_pipeline!, only: [:retry, :cancel]
before_action :builds_enabled, only: :charts before_action :builds_enabled, only: :charts
wrap_parameters Ci::Pipeline
def index def index
@scope = params[:scope] @scope = params[:scope]
@pipelines = PipelinesFinder @pipelines = PipelinesFinder
...@@ -92,15 +94,27 @@ class Projects::PipelinesController < Projects::ApplicationController ...@@ -92,15 +94,27 @@ class Projects::PipelinesController < Projects::ApplicationController
def retry def retry
pipeline.retry_failed(current_user) pipeline.retry_failed(current_user)
respond_to do |format|
format.html do
redirect_back_or_default default: namespace_project_pipelines_path(project.namespace, project) redirect_back_or_default default: namespace_project_pipelines_path(project.namespace, project)
end end
format.json { head :no_content }
end
end
def cancel def cancel
pipeline.cancel_running pipeline.cancel_running
respond_to do |format|
format.html do
redirect_back_or_default default: namespace_project_pipelines_path(project.namespace, project) redirect_back_or_default default: namespace_project_pipelines_path(project.namespace, project)
end end
format.json { head :no_content }
end
end
def charts def charts
@charts = {} @charts = {}
@charts[:week] = Ci::Charts::WeekChart.new(project) @charts[:week] = Ci::Charts::WeekChart.new(project)
......
...@@ -5,6 +5,8 @@ describe Projects::PipelinesController do ...@@ -5,6 +5,8 @@ describe Projects::PipelinesController do
let(:project) { create(:empty_project, :public) } let(:project) { create(:empty_project, :public) }
before do before do
project.add_developer(user)
sign_in(user) sign_in(user)
end end
...@@ -87,4 +89,38 @@ describe Projects::PipelinesController do ...@@ -87,4 +89,38 @@ describe Projects::PipelinesController do
expect(json_response['favicon']).to eq "/assets/ci_favicons/#{status.favicon}.ico" expect(json_response['favicon']).to eq "/assets/ci_favicons/#{status.favicon}.ico"
end end
end end
describe 'POST retry.json' do
let!(:pipeline) { create(:ci_pipeline, :failed, project: project) }
let!(:build) { create(:ci_build, :failed, pipeline: pipeline) }
before do
post :retry, namespace_id: project.namespace,
project_id: project,
id: pipeline.id,
format: :json
end
it 'retries a pipeline without returning any content' do
expect(response).to have_http_status(:no_content)
expect(build.reload).to be_retried
end
end
describe 'POST cancel.json' do
let!(:pipeline) { create(:ci_pipeline, project: project) }
let!(:build) { create(:ci_build, :running, pipeline: pipeline) }
before do
post :cancel, namespace_id: project.namespace,
project_id: project,
id: pipeline.id,
format: :json
end
it 'cancels a pipeline without returning any content' do
expect(response).to have_http_status(:no_content)
expect(pipeline.reload).to be_canceled
end
end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment