Add BuildQueueWorker for injecting redis-keys

This commit is contained in:
Kim "BKC" Carlbäcker 2016-12-14 16:06:50 +01:00
parent afea2df151
commit a6ab8a3409
3 changed files with 25 additions and 0 deletions

View file

@ -81,6 +81,12 @@ module Ci
end end
state_machine :status do state_machine :status do
after_transition any => [:pending] do |build|
build.run_after_commit do
BuildQueueWorker.perform_async(id)
end
end
after_transition pending: :running do |build| after_transition pending: :running do |build|
build.run_after_commit do build.run_after_commit do
BuildHooksWorker.perform_async(id) BuildHooksWorker.perform_async(id)

View file

@ -0,0 +1,18 @@
class BuildQueueWorker
include Sidekiq::Worker
include BuildQueue
def perform(build_id)
Ci::Build.find_by(id: build_id).try do |build|
project.runners.select do |runner|
if runner.can_pick?(build)
# Inject last_update into Redis
Gitlab::Redis.with do |redis]
new_update = Time.new.inspect
redis.set(current_runner_redis_key, new_update, ex: 60.minutes)
end
end
end
end
end
end

View file

@ -62,6 +62,7 @@ module Ci
def current_runner_redis_key def current_runner_redis_key
@runner_redis_key ||= "#{current_runner.token}_#{current_runner.tag_list}" @runner_redis_key ||= "#{current_runner.token}_#{current_runner.tag_list}"
end
def get_runner_version_from_params def get_runner_version_from_params
return unless params["info"].present? return unless params["info"].present?