背景介绍:本实现基于sidekiq已经正常安装并且已经在项目里使用了,只记录一下怎么启动运行。代码采用Ruby实现,功能是在前端调用Jenkins job,具体的Jenkins调用方法不做深入描述。
具体可以参考Home · mperham/sidekiq Wiki · GitHub
https://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
这篇博客介绍了如何在已有的Sidekiq环境中配置启动任务,以在前端调用Jenkinsjob并实时更新状态。通过Ruby代码展示了配置Sidekiq的启动回调、自定义逻辑以及环境变量的使用。同时提到了状态切换的实现,利用AASM库进行状态管理。
1299

被折叠的 条评论
为什么被折叠?



