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 {
* @return {Promise}
*/
postAction(endpoint) {
return Vue.http.post(endpoint, {}, { emulateJSON: true });
return Vue.http.post(`${endpoint}.json`);
}
}
......@@ -6,6 +6,8 @@ class Projects::PipelinesController < Projects::ApplicationController
before_action :authorize_update_pipeline!, only: [:retry, :cancel]
before_action :builds_enabled, only: :charts
wrap_parameters Ci::Pipeline
def index
@scope = params[:scope]
@pipelines = PipelinesFinder
......@@ -92,15 +94,27 @@ class Projects::PipelinesController < Projects::ApplicationController
def retry
pipeline.retry_failed(current_user)
respond_to do |format|
format.html do
redirect_back_or_default default: namespace_project_pipelines_path(project.namespace, project)
end
format.json { head :no_content }
end
end
def cancel
pipeline.cancel_running
respond_to do |format|
format.html do
redirect_back_or_default default: namespace_project_pipelines_path(project.namespace, project)
end
format.json { head :no_content }
end
end
def charts
@charts = {}
@charts[:week] = Ci::Charts::WeekChart.new(project)
......
......@@ -5,6 +5,8 @@ describe Projects::PipelinesController do
let(:project) { create(:empty_project, :public) }
before do
project.add_developer(user)
sign_in(user)
end
......@@ -87,4 +89,38 @@ describe Projects::PipelinesController do
expect(json_response['favicon']).to eq "/assets/ci_favicons/#{status.favicon}.ico"
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
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