背景介绍:本实现基于sidekiq已经正常安装并且已经在项目里使用了,只记录一下怎么启动运行。代码采用Ruby实现,功能是在前端调用Jenkins job,具体的Jenkins调用方法不做深入描述。
具体可以参考Home · mperham/sidekiq Wiki · GitHubhttps://github.com/mperham/sidekiq/wiki
功能展示:前端状态会随着调用的Jenkins job的状态自动更改
代码实现:
#1. config/initializers/sidekiq.rb
Sidekiq.configure_server do |config|
config.on(:startup) do
require 'sidekiq_cron'
SidekiqCron.new.run
end
end
#2. app/lib/sidekiq_cron.rb 可以写你的实现逻辑,比如通过ID获得Jenkins job等
def run
Thread.new do
loop do
begin
if Rails.application.config.sidekiq[:task_execution] #检查一下你的配置环境里有没有打开这个开关,详见3
TasksAutostartWorker.perform_async
sleep 1
end
end
rescue => exception
Exceptions::ErrorReporter.notify(exception)
end
end
end
#3.config/environments/development.rb
config.sidekiq = {
task_execution: true
}
#4.在你的server上启动sidekiq,由于你用到了Jenkins,所以要注意启动它,类似的还有 sidekiq -q high -q default -q critical.
sidekiq -q high -q jenkins
#5. 状态切换使用了https://github.com/aasm/aasm, e.g.
event :started do
transitions from: [:prepared, :success, :error], to: :started
end