[refs #442] Add mass build counters ant their update. Add failed builds report generate

This commit is contained in:
konstantin.grabar 2012-06-22 19:10:44 +04:00
parent edcc0c996f
commit f3bd3bbd7f
5 changed files with 52 additions and 17 deletions

View File

@ -31,6 +31,11 @@ class Platforms::PlatformsController < Platforms::BaseController
render :action => :build_all render :action => :build_all
end end
def get_failed_builds_list
@mass_build = MassBuild.find params[:mass_build_id]
send_file @mass_build.generate_failed_builds_list, :filename => "mass_build_#{@mass_build.id}"
end
def index def index
@platforms = @platforms.accessible_by(current_ability, :related).paginate(:page => params[:page], :per_page => 20) @platforms = @platforms.accessible_by(current_ability, :related).paginate(:page => params[:page], :per_page => 20)
end end

View File

@ -6,7 +6,7 @@ class BuildList < ActiveRecord::Base
belongs_to :build_for_platform, :class_name => 'Platform' belongs_to :build_for_platform, :class_name => 'Platform'
belongs_to :user belongs_to :user
belongs_to :advisory belongs_to :advisory
belongs_to :mass_build belongs_to :mass_build, :counter_cache => true
has_many :items, :class_name => "BuildList::Item", :dependent => :destroy has_many :items, :class_name => "BuildList::Item", :dependent => :destroy
has_many :packages, :class_name => "BuildList::Package", :dependent => :destroy has_many :packages, :class_name => "BuildList::Package", :dependent => :destroy
@ -103,6 +103,14 @@ class BuildList < ActiveRecord::Base
state_machine :status, :initial => :waiting_for_response do state_machine :status, :initial => :waiting_for_response do
around_transition do |build_list, transition, block|
if build_list.mass_build
MassBuild.decrement_counter "#{BuildList::HUMAN_STATUSES[build_list.status].to_s}_count", build_list.mass_build_id
block.call
MassBuild.increment_counter "#{BuildList::HUMAN_STATUSES[build_list.status].to_s}_count", build_list.mass_build_id
end
end
after_transition :on => :published, :do => :set_version_and_tag after_transition :on => :published, :do => :set_version_and_tag
event :place_build do event :place_build do

View File

@ -32,4 +32,13 @@ class MassBuild < ActiveRecord::Base
:auto_publish => self.auto_publish :auto_publish => self.auto_publish
) # later with resque ) # later with resque
end end
def generate_failed_builds_list
report = ""
BuildList.where(:status => BuildServer::BUILD_ERROR, :mass_build_id => self.id).each do |build_list|
report << "ID: #{build_list.id}; "
report << "PROJECT_NAME: #{build_list.project.name}\n"
end
report
end
end end

View File

@ -0,0 +1,9 @@
class AddCountersToMassBuilds < ActiveRecord::Migration
def change
add_column :mass_builds, :build_lists_count, :integer, :default => 0
add_column :mass_builds, :build_published_count, :integer, :default => 0
add_column :mass_builds, :build_pending_count, :integer, :default => 0
add_column :mass_builds, :build_started_count, :integer, :default => 0
add_column :mass_builds, :build_publish_count, :integer, :default => 0
end
end

View File

@ -11,14 +11,14 @@
# #
# It's strongly recommended to check this file into your version control system. # It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20120609163454) do ActiveRecord::Schema.define(:version => 20120622092725) do
create_table "activity_feeds", :force => true do |t| create_table "activity_feeds", :force => true do |t|
t.integer "user_id", :null => false t.integer "user_id", :null => false
t.string "kind" t.string "kind"
t.text "data" t.text "data"
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
end end
create_table "advisories", :force => true do |t| create_table "advisories", :force => true do |t|
@ -204,6 +204,11 @@ ActiveRecord::Schema.define(:version => 20120609163454) do
t.string "arch_names" t.string "arch_names"
t.integer "user_id" t.integer "user_id"
t.boolean "auto_publish", :default => false, :null => false t.boolean "auto_publish", :default => false, :null => false
t.integer "build_lists_count", :default => 0
t.integer "build_published_count", :default => 0
t.integer "build_pending_count", :default => 0
t.integer "build_started_count", :default => 0
t.integer "build_publish_count", :default => 0
end end
create_table "platforms", :force => true do |t| create_table "platforms", :force => true do |t|
@ -217,7 +222,7 @@ ActiveRecord::Schema.define(:version => 20120609163454) do
t.string "owner_type" t.string "owner_type"
t.string "visibility", :default => "open", :null => false t.string "visibility", :default => "open", :null => false
t.string "platform_type", :default => "main", :null => false t.string "platform_type", :default => "main", :null => false
t.string "distrib_type", :null => false t.string "distrib_type"
end end
add_index "platforms", ["name"], :name => "index_platforms_on_name", :unique => true, :case_sensitive => false add_index "platforms", ["name"], :name => "index_platforms_on_name", :unique => true, :case_sensitive => false
@ -288,27 +293,25 @@ ActiveRecord::Schema.define(:version => 20120609163454) do
t.text "description" t.text "description"
t.string "ancestry" t.string "ancestry"
t.boolean "has_issues", :default => true t.boolean "has_issues", :default => true
t.boolean "has_wiki", :default => false
t.string "srpm_file_name" t.string "srpm_file_name"
t.string "srpm_content_type" t.string "srpm_content_type"
t.integer "srpm_file_size" t.integer "srpm_file_size"
t.datetime "srpm_updated_at" t.datetime "srpm_updated_at"
t.boolean "has_wiki", :default => false
t.string "default_branch", :default => "master" t.string "default_branch", :default => "master"
t.boolean "is_package", :default => true, :null => false t.boolean "is_package", :default => true, :null => false
t.integer "average_build_time", :default => 0, :null => false t.integer "average_build_time", :default => 0, :null => false
t.integer "build_count", :default => 0, :null => false t.integer "build_count", :default => 0, :null => false
end end
add_index "projects", ["owner_id"], :name => "index_projects_on_name_and_owner_id_and_owner_type", :unique => true, :case_sensitive => false
create_table "register_requests", :force => true do |t| create_table "register_requests", :force => true do |t|
t.string "name" t.string "name"
t.string "email" t.string "email"
t.string "token" t.string "token"
t.boolean "approved", :default => false t.boolean "approved", :default => false
t.boolean "rejected", :default => false t.boolean "rejected", :default => false
t.datetime "created_at" t.datetime "created_at", :null => false
t.datetime "updated_at" t.datetime "updated_at", :null => false
t.string "interest" t.string "interest"
t.text "more" t.text "more"
end end
@ -362,6 +365,7 @@ ActiveRecord::Schema.define(:version => 20120609163454) do
t.string "name" t.string "name"
t.string "email", :default => "", :null => false t.string "email", :default => "", :null => false
t.string "encrypted_password", :limit => 128, :default => "", :null => false t.string "encrypted_password", :limit => 128, :default => "", :null => false
t.string "password_salt", :default => "", :null => false
t.string "reset_password_token" t.string "reset_password_token"
t.datetime "remember_created_at" t.datetime "remember_created_at"
t.datetime "created_at" t.datetime "created_at"
@ -369,8 +373,11 @@ ActiveRecord::Schema.define(:version => 20120609163454) do
t.string "uname" t.string "uname"
t.string "role" t.string "role"
t.string "language", :default => "en" t.string "language", :default => "en"
t.datetime "reset_password_sent_at" t.string "confirmation_token"
t.datetime "confirmed_at"
t.datetime "confirmation_sent_at"
t.integer "own_projects_count", :default => 0, :null => false t.integer "own_projects_count", :default => 0, :null => false
t.datetime "reset_password_sent_at"
t.text "professional_experience" t.text "professional_experience"
t.string "site" t.string "site"
t.string "company" t.string "company"
@ -382,9 +389,6 @@ ActiveRecord::Schema.define(:version => 20120609163454) do
t.integer "failed_attempts", :default => 0 t.integer "failed_attempts", :default => 0
t.string "unlock_token" t.string "unlock_token"
t.datetime "locked_at" t.datetime "locked_at"
t.string "confirmation_token"
t.datetime "confirmed_at"
t.datetime "confirmation_sent_at"
t.string "authentication_token" t.string "authentication_token"
t.integer "build_priority", :default => 50 t.integer "build_priority", :default => 50
end end