merge
This commit is contained in:
commit
e3b12e4a1a
|
@ -0,0 +1,26 @@
|
|||
class ProductsController < ApplicationController
|
||||
before_filter :authenticate_user!, :except => [:product_begin, :product_end]
|
||||
before_filter :find_product_by_name, :only => [:product_begin, :product_end]
|
||||
|
||||
def product_begin
|
||||
@product.build_status = Product::STATUS::BUILDING
|
||||
@product.build_path = params[:path]
|
||||
@product.save!
|
||||
|
||||
render :nothing => true, :status => 200
|
||||
end
|
||||
|
||||
def product_end
|
||||
@product.build_status = ((params[:status] == BuildServer::SUCCESS) ? Product::BUILD_COMPLETED : Product::BUILD_FAILED)
|
||||
@product.build_path = params[:path]
|
||||
@product.save!
|
||||
|
||||
render :nothing => true, :status => 200
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def find_product_by_name
|
||||
@product = Product.find_by_name params[:product_name]
|
||||
end
|
||||
end
|
|
@ -0,0 +1,2 @@
|
|||
module ProductsHelper
|
||||
end
|
|
@ -1,6 +1,7 @@
|
|||
class Platform < ActiveRecord::Base
|
||||
belongs_to :parent, :class_name => 'Platform', :foreign_key => 'parent_platform_id'
|
||||
has_many :repositories, :dependent => :destroy
|
||||
has_many :products, :dependent => :destroy
|
||||
|
||||
validates :name, :presence => true, :uniqueness => true
|
||||
validates :unixname, :uniqueness => true, :presence => true, :format => { :with => /^[a-zA-Z0-9\-.]+$/ }, :allow_nil => false, :allow_blank => false
|
||||
|
@ -8,6 +9,7 @@ class Platform < ActiveRecord::Base
|
|||
before_create :xml_rpc_create
|
||||
before_destroy :xml_rpc_destroy
|
||||
|
||||
|
||||
def path
|
||||
build_path(unixname)
|
||||
end
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
class Product < ActiveRecord::Base
|
||||
validates :name, :presence => true, :uniqueness => true
|
||||
validates :platform_id, :presence => true
|
||||
validates :build_status, :inclusion => { :in => [ NEVER_BUILT, BUILD_COMPLETED, BUILD_FAILED ] }
|
||||
|
||||
belongs_to :platform
|
||||
|
||||
NEVER_BUILT = 2
|
||||
BUILD_COMPLETED = 0
|
||||
BUILD_FAILED = 1
|
||||
end
|
|
@ -7,6 +7,8 @@ Rosa::Application.routes.draw do
|
|||
get 'unfreeze'
|
||||
end
|
||||
|
||||
resources :products
|
||||
|
||||
resources :repositories do
|
||||
resources :projects do
|
||||
resource :repo, :controller => "git/repositories", :only => [:show]
|
||||
|
@ -26,6 +28,9 @@ Rosa::Application.routes.draw do
|
|||
match 'build_lists/post_build', :to => "build_lists#post_build"
|
||||
match 'build_lists/circle_build', :to => "build_lists#circle_build"
|
||||
|
||||
match 'product_begin', :to => 'products#product_begin'
|
||||
match 'product_end', :to => 'products#product_end'
|
||||
|
||||
# Tree
|
||||
match 'platforms/:platform_id/repositories/:repository_id/projects/:project_id/git/tree/:treeish(/*path)', :controller => "git/trees", :action => :show, :treeish => /[0-9a-zA-Z_.\-]*/, :defaults => { :treeish => :master }, :as => :tree
|
||||
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
class CreateProducts < ActiveRecord::Migration
|
||||
def self.up
|
||||
create_table :products do |t|
|
||||
t.string :name, :null => false
|
||||
t.integer :platform_id, :null => false
|
||||
t.integer :build_status, :default => 2, :null => false ### NOTE :default => 2 comes from Product::NEVER_BUILT status which we unable to use here
|
||||
t.string :build_path
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
|
||||
def self.down
|
||||
drop_table :products
|
||||
end
|
||||
end
|
11
db/schema.rb
11
db/schema.rb
|
@ -10,7 +10,7 @@
|
|||
#
|
||||
# It's strongly recommended to check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(:version => 20110408134718) do
|
||||
ActiveRecord::Schema.define(:version => 20110411082826) do
|
||||
|
||||
create_table "arches", :force => true do |t|
|
||||
t.string "name", :null => false
|
||||
|
@ -67,6 +67,15 @@ ActiveRecord::Schema.define(:version => 20110408134718) do
|
|||
t.boolean "released", :default => false
|
||||
end
|
||||
|
||||
create_table "products", :force => true do |t|
|
||||
t.string "name", :null => false
|
||||
t.integer "platform_id", :null => false
|
||||
t.integer "build_status", :default => 2, :null => false
|
||||
t.string "build_path"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
end
|
||||
|
||||
create_table "projects", :force => true do |t|
|
||||
t.string "name"
|
||||
t.string "unixname"
|
||||
|
|
|
@ -71,4 +71,8 @@ class BuildServer
|
|||
def self.add_build_list project_name, branch_name, platform_name, arch_name
|
||||
self.client.call('add_build_list', project_name, branch_name, platform_name, arch_name)
|
||||
end
|
||||
|
||||
def self.freeze platform_name, new_repo_name = nil
|
||||
self.client.call('freeze_platform', platform_name, new_repo_name)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
require 'xmlrpc/client'
|
||||
class ProductBuilder
|
||||
|
||||
SUCCESS = 0
|
||||
ERROR = 1
|
||||
|
||||
|
||||
def self.client
|
||||
@@client ||= XMLRPC::Client.new3(:host => APP_CONFIG['product_builder_ip'], :port => APP_CONFIG['product_builder_port'], :path => APP_CONFIG['product_builder_path'])
|
||||
end
|
||||
|
||||
def self.create_product name, platform_name, params, packages, post_install, path, repos
|
||||
self.client.call('create_product', name, platform_name, params, packages, post_install, path, repos)
|
||||
end
|
||||
end
|
|
@ -0,0 +1,5 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe ProductsController do
|
||||
|
||||
end
|
|
@ -0,0 +1,15 @@
|
|||
require 'spec_helper'
|
||||
|
||||
# Specs in this file have access to a helper object that includes
|
||||
# the ProductsHelper. For example:
|
||||
#
|
||||
# describe ProductsHelper do
|
||||
# describe "string concat" do
|
||||
# it "concats two strings with spaces" do
|
||||
# helper.concat_strings("this","that").should == "this that"
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
describe ProductsHelper do
|
||||
pending "add some examples to (or delete) #{__FILE__}"
|
||||
end
|
|
@ -0,0 +1,5 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Product do
|
||||
pending "add some examples to (or delete) #{__FILE__}"
|
||||
end
|
Loading…
Reference in New Issue