Commit ffcf3c68 authored by Grzegorz Bizon's avatar Grzegorz Bizon

Skip job only when canceling the pipeline it belongs to

parent 008f22cd
...@@ -214,7 +214,13 @@ module Ci ...@@ -214,7 +214,13 @@ module Ci
def cancel_running def cancel_running
Gitlab::OptimisticLocking.retry_lock( Gitlab::OptimisticLocking.retry_lock(
statuses.cancelable) do |cancelable| statuses.cancelable) do |cancelable|
cancelable.each(&:cancel) cancelable.each do |status|
if status.created?
status.skip
elsif status.active?
status.cancel
end
end
end end
end end
......
...@@ -65,8 +65,7 @@ class CommitStatus < ActiveRecord::Base ...@@ -65,8 +65,7 @@ class CommitStatus < ActiveRecord::Base
end end
event :cancel do event :cancel do
transition [:created] => :skipped transition [:created, :pending, :running] => :canceled
transition [:pending, :running] => :canceled
end end
before_transition created: [:pending, :running] do |commit_status| before_transition created: [:pending, :running] do |commit_status|
......
...@@ -5,12 +5,15 @@ describe API::CommitStatuses, api: true do ...@@ -5,12 +5,15 @@ describe API::CommitStatuses, api: true do
let!(:project) { create(:project, :repository) } let!(:project) { create(:project, :repository) }
let(:commit) { project.repository.commit } let(:commit) { project.repository.commit }
let(:commit_status) { create(:commit_status, pipeline: pipeline) }
let(:guest) { create_user(:guest) } let(:guest) { create_user(:guest) }
let(:reporter) { create_user(:reporter) } let(:reporter) { create_user(:reporter) }
let(:developer) { create_user(:developer) } let(:developer) { create_user(:developer) }
let(:sha) { commit.id } let(:sha) { commit.id }
let(:commit_status) do
create(:commit_status, status: :pending, pipeline: pipeline)
end
describe "GET /projects/:id/repository/commits/:sha/statuses" do describe "GET /projects/:id/repository/commits/:sha/statuses" do
let(:get_url) { "/projects/#{project.id}/repository/commits/#{sha}/statuses" } let(:get_url) { "/projects/#{project.id}/repository/commits/#{sha}/statuses" }
......
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