diff options
author | Kamil TrzciĆski <ayufan@ayufan.eu> | 2017-03-27 11:58:57 +0000 |
---|---|---|
committer | DJ Mountney <david@twkie.net> | 2017-03-27 14:49:44 -0700 |
commit | 81b1730d44055af575bc234c151bd2b1708b205d (patch) | |
tree | 754c6643720c212be9679287e6a280661b7930e9 | |
parent | 87d66fa5a5089eda95a50783413730a9c3c36d62 (diff) | |
download | gitlab-ce-81b1730d44055af575bc234c151bd2b1708b205d.tar.gz |
Merge branch 'fix/gb/pipeline-retry-only-latest-jobs' into 'master'
Do not retry jobs multiple times when retrying a pipeline
Closes #30092
See merge request !10249
-rw-r--r-- | app/services/ci/retry_pipeline_service.rb | 4 | ||||
-rw-r--r-- | changelogs/unreleased/fix-gb-pipeline-retry-only-latest-jobs.yml | 5 | ||||
-rw-r--r-- | spec/services/ci/retry_pipeline_service_spec.rb | 13 |
3 files changed, 20 insertions, 2 deletions
diff --git a/app/services/ci/retry_pipeline_service.rb b/app/services/ci/retry_pipeline_service.rb index 574561adc4c..f72ddbf690c 100644 --- a/app/services/ci/retry_pipeline_service.rb +++ b/app/services/ci/retry_pipeline_service.rb @@ -7,14 +7,14 @@ module Ci raise Gitlab::Access::AccessDeniedError end - pipeline.builds.failed_or_canceled.find_each do |build| + pipeline.builds.latest.failed_or_canceled.find_each do |build| next unless build.retryable? Ci::RetryBuildService.new(project, current_user) .reprocess(build) end - pipeline.builds.skipped.find_each do |skipped| + pipeline.builds.latest.skipped.find_each do |skipped| retry_optimistic_lock(skipped) { |build| build.process } end diff --git a/changelogs/unreleased/fix-gb-pipeline-retry-only-latest-jobs.yml b/changelogs/unreleased/fix-gb-pipeline-retry-only-latest-jobs.yml new file mode 100644 index 00000000000..c14679be70f --- /dev/null +++ b/changelogs/unreleased/fix-gb-pipeline-retry-only-latest-jobs.yml @@ -0,0 +1,5 @@ +--- +title: Fix bug that caused jobs that already had been retried to be retried again + when retrying a pipeline +merge_request: 10249 +author: diff --git a/spec/services/ci/retry_pipeline_service_spec.rb b/spec/services/ci/retry_pipeline_service_spec.rb index 5445b65f4e8..f1b2d3a4798 100644 --- a/spec/services/ci/retry_pipeline_service_spec.rb +++ b/spec/services/ci/retry_pipeline_service_spec.rb @@ -9,6 +9,19 @@ describe Ci::RetryPipelineService, '#execute', :services do context 'when user has ability to modify pipeline' do let(:user) { create(:admin) } + context 'when there are already retried jobs present' do + before do + create_build('rspec', :canceled, 0) + create_build('rspec', :failed, 0) + end + + it 'does not retry jobs that has already been retried' do + expect(statuses.first).to be_retried + expect { service.execute(pipeline) } + .to change { CommitStatus.count }.by(1) + end + end + context 'when there are failed builds in the last stage' do before do create_build('rspec 1', :success, 0) |