diff --git a/app/services/ci/pipeline_schedules/calculate_next_run_service.rb b/app/services/ci/pipeline_schedules/calculate_next_run_service.rb index a1b9ab5f82ed9f29821c072959915a3d9364999c..064b004a5b822543d4f8bdc01e9856863fcffe3b 100644 --- a/app/services/ci/pipeline_schedules/calculate_next_run_service.rb +++ b/app/services/ci/pipeline_schedules/calculate_next_run_service.rb @@ -47,7 +47,13 @@ def plan_cron every_x_minutes = (1.day.in_minutes / daily_limit).to_i - Gitlab::Ci::CronParser.parse_natural("every #{every_x_minutes} minutes", Time.zone.name) + begin + Gitlab::Ci::CronParser.parse_natural("every #{every_x_minutes} minutes", Time.zone.name) + rescue ZeroDivisionError + # Fugit returns ZeroDivision Error if provided a number + # less than 1 in the expression. + nil + end end end end diff --git a/spec/services/ci/pipeline_schedules/calculate_next_run_service_spec.rb b/spec/services/ci/pipeline_schedules/calculate_next_run_service_spec.rb index 182c5bebbc1faa467121a01bdfc8eceae849afe6..b3bdfdee95622e939e268c8e56a9465a7e0e70d6 100644 --- a/spec/services/ci/pipeline_schedules/calculate_next_run_service_spec.rb +++ b/spec/services/ci/pipeline_schedules/calculate_next_run_service_spec.rb @@ -30,6 +30,8 @@ # 1.day / 2.hours => 12 times a day and it is invalid because there is a minimum for plan limits. # See: https://docs.gitlab.com/ee/administration/instance_limits.html#limit-the-number-of-pipelines-created-by-a-pipeline-schedule-per-day '*/5 * * * *' | '0 * * * *' | 1.day / 2.hours | Time.zone.local(2021, 5, 27, 11, 0) | Time.zone.local(2021, 5, 27, 12, 5) + '*/5 * * * *' | '0 * * * *' | 2000 | Time.zone.local(2021, 5, 27, 11, 0) | Time.zone.local(2021, 5, 27, 12, 5) + '*/5 * * * *' | '0 * * * *' | -24 | Time.zone.local(2021, 5, 27, 11, 0) | Time.zone.local(2021, 5, 27, 12, 5) end with_them do