gitlab-org--gitlab-foss/app/workers/pipeline_schedule_worker.rb
Shinya Maeda d56d419a79 Squashed commit of the following:
commit 0c00e52d339f8471a6ea425d5a4a59751a3f4a35
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Nov 30 15:41:46 2018 +0900

    Update schedules.md

commit 0ae56bf5a0ba9254d2ebd4c846395113ae72d686
Merge: c143777c9f2 9ce28bf08b
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Nov 30 15:38:01 2018 +0900

    Merge branch 'master-ce' into ignore-failed-pipeline-creation-on-pipeline-schedule

commit c143777c9f250c8075355ac07e9bae7b074665c3
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Nov 29 17:18:07 2018 +0900

    Fix coding offence

commit 7c816dfa634b5911310c67c285fc3c37d5f03517
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Nov 29 16:12:06 2018 +0900

    Improve spec quality

commit f78eed45e991123f8af4a7b24f041529bbb35e91
Merge: 96d20ce9144 a5f4627857
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Nov 29 15:20:16 2018 +0900

    Merge branch 'master-ce' into ignore-failed-pipeline-creation-on-pipeline-schedule

commit 96d20ce914458f86e68b57bc1bb88ab8d27f010b
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Nov 27 16:25:42 2018 +0900

    Print pipeline error

commit 97842068b6cf1432cd400ead749843946b4f51ee
Merge: c2b015949af 2ee8c40fc1
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Nov 27 15:51:49 2018 +0900

    Merge branch 'master-ce' into ignore-failed-pipeline-creation-on-pipeline-schedule

commit c2b015949afb3ecc70cb057e2d13672f378c0d03
Merge: 3435137c17b fbbe5ccd1b
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Mon Nov 26 15:26:17 2018 +0900

    Merge branch 'master-ce' into ignore-failed-pipeline-creation-on-pipeline-schedule

commit 3435137c17b0ef03003e39dd08c7370fe916c626
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Nov 20 17:45:38 2018 +0900

    Track exception with Sentry

commit 3f01f10d3b7380f0e8ceb3a379d8b6c602e9d6ca
Merge: 5749c62355f 8a581d531b
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Tue Nov 20 17:12:41 2018 +0900

    Merge branch 'master-ce' into ignore-failed-pipeline-creation-on-pipeline-schedule

commit 5749c62355f8de62bb4e36ba1e351a78350607c1
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Nov 1 11:14:26 2018 +0900

    Create a pipeline even if it is corrupted

commit e01789890b6949b346d40fadef41aa133191cc43
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Oct 31 14:26:09 2018 +0900

    Improve production log message

commit f20d698a535f1dc70d5437c20b629fd1d956fb27
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Fri Oct 19 17:11:20 2018 +0900

    Fix typo

commit 01323b02ac41ec50bcf237409f2e3c5c214bbfc1
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Thu Oct 18 14:46:44 2018 +0900

    Update documents

commit 460337bf4a7e67a35d6c342678b4cfe66710ad56
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Oct 10 13:21:26 2018 +0900

    Add changelog

commit a3c4711752fedebfacbdf52da94058524af3c9f4
Author: Shinya Maeda <shinya@gitlab.com>
Date:   Wed Oct 10 09:20:06 2018 +0900

    Ignore failed pipeline creation in pipeline schedule worker. Instead, logging the event.
2018-11-30 16:32:52 +09:00

44 lines
1.4 KiB
Ruby

# frozen_string_literal: true
class PipelineScheduleWorker
include ApplicationWorker
include CronjobQueue
# rubocop: disable CodeReuse/ActiveRecord
def perform
Ci::PipelineSchedule.active.where("next_run_at < ?", Time.now)
.preload(:owner, :project).find_each do |schedule|
begin
Ci::CreatePipelineService.new(schedule.project,
schedule.owner,
ref: schedule.ref)
.execute!(:schedule, ignore_skip_ci: true, save_on_errors: true, schedule: schedule)
rescue => e
error(schedule, e)
ensure
schedule.schedule_next_run!
end
end
end
# rubocop: enable CodeReuse/ActiveRecord
private
def error(schedule, error)
failed_creation_counter.increment
Rails.logger.error "Failed to create a scheduled pipeline. " \
"schedule_id: #{schedule.id} message: #{error.message}"
Gitlab::Sentry
.track_exception(error,
issue_url: 'https://gitlab.com/gitlab-org/gitlab-ce/issues/41231',
extra: { schedule_id: schedule.id })
end
def failed_creation_counter
@failed_creation_counter ||=
Gitlab::Metrics.counter(:pipeline_schedule_creation_failed_total,
"Counter of failed attempts of pipeline schedule creation")
end
end