when "remove-prj"
BuildServerController.remove_project( option[:name], option[:pid], option[:dist] )
- when "fullbuild"
- BuildServerController.build_all_projects( option[:name], option[:dist] )
-
when "register"
BuildServerController.register_package( option[:name], option[:package], option[:dist] )
end
- # full build
- def self.build_all_projects( id, dist_name )
-
- # server
- server = get_server(id)
- migrate_db(server)
-
- # check distribution
- dist_name = check_distribution_name(dist_name, server)
- if dist_name.nil? then return false end
-
- client = BuildCommClient.create( "127.0.0.1", server.port )
- if client.nil? then
- puts "Server is not running!"
- return false
- end
-
- # send request
- fullbuild_ok = false
- if client.send "FULLBUILD|#{server.password}|#{dist_name}" then
- # recevie & print
- mismatched = false
- dist_not_found = false
- result = client.read_lines do |l|
- puts l
- if l.include? "Password mismatched!" then
- mismatched = true
- end
- if l.include? "Distribution not found!" then
- dist_not_found = true
- end
- end
- if result and not mismatched and not dist_not_found then
- fullbuild_ok = true
- end
- end
-
- # terminate
- client.terminate
-
- if not fullbuild_ok then
- puts "Full build failed!"
- end
-
- return true
- end
-
-
def self.register_package(id, file_path, dist_name)
# server
server = get_server(id)
REMOVE_SYNC="build-svr remove-sync -n <server name> -u <remote pkg server url> [--dist <distribution>]"
ADD_PRJ="build-svr add-prj -n <server name> -N <project name> (-g <git repository> -b <git branch>|-P <package name>) [-w <password>] [-o <os list>] [--dist <distribution>]"
REMOVE_PRJ="build-svr remove-prj -n <server name> -N <project name> [--dist <distribution>]"
- FULLBUILD="build-svr fullbuild -n <server name> [--dist <distribution>]"
REGISTER="build-svr register -n <server name> -P <package file> [--dist <distribution>]"
QUERY="build-svr query -n <server name>"
SET_ATTR="build-svr set-attr -n <server name> -A <attribute> -V <value>"
raise ArgumentError, "Usage: " + BuildServerUsage::REMOVE_PRJ
end
- when "fullbuild"
- if options[:name].nil? or options[:name].empty? then
- raise ArgumentError, "Usage: " + BuildServerUsage::FULLBUILD
- end
-
when "register"
if options[:name].nil? or options[:name].empty? or
options[:package].nil? or options[:package].empty? then
+ "\t" + "add-prj Add project to build." + "\n" \
+ "\t" + "remove-prj Remove project." + "\n" \
+ "\t" + "register Register the package to the build-server." + "\n" \
- + "\t" + "fullbuild Build all your projects and upload them to package server." + "\n" \
+ "\t" + "query Show build server configuration." + "\n" \
+ "\t" + "set-attr Set build server atribute." + "\n" \
+ "\t" + "get-attr Get build server atribute." + "\n" \
+ "\t" + BuildServerUsage::REMOVE_SYNC + "\n" \
+ "\t" + BuildServerUsage::ADD_PRJ + "\n" \
+ "\t" + BuildServerUsage::REMOVE_PRJ + "\n" \
- + "\t" + BuildServerUsage::FULLBUILD + "\n" \
+ "\t" + BuildServerUsage::REGISTER + "\n" \
+ "\t" + BuildServerUsage::QUERY + "\n" \
+ "\t" + BuildServerUsage::SET_ATTR + "\n" \
cmd.eql? "lock-dist" or cmd.eql? "unlock-dist" or
cmd.eql? "add-sync" or cmd.eql? "remove-sync" or
cmd.eql? "add-prj" or cmd.eql? "remove-prj" or
- cmd.eql? "fullbuild" or cmd.eql? "register" or
+ cmd.eql? "register" or
cmd.eql? "query" or
cmd.eql? "set-attr" or cmd.eql? "get-attr" or
cmd =~ /(-v)|(--version)/ or
end
- # create new full job
- def create_new_full_build_job(dist_name="BASE")
- # create multi job
- result = MultiBuildJob.new( @server )
-
- # create sub jobs
- get_all_projects().each do |prj|
- if prj.type != "GIT" then next end
- if prj.dist_name != dist_name then next end
-
- prj.os_list.each do |os|
- if not @server.supported_os_list.include? os then next end
-
- new_job = create_new_job( prj.name, os, dist_name )
- if new_job.nil? then next end
-
- # This make project to build
- # even though there is a package of same version on pkg-server
- new_job.set_force_rebuild(true)
-
- # add to multi job
- result.add_sub_job( new_job )
- end
- end
-
- return result
- end
-
-
# get project that includes specified pkg name and os
# will return [project,os,ver] list
def get_projects_from_pkgs(pkgs, dist_name="BASE")
handle_cmd_stop( req_line, req )
when "UPGRADE"
handle_cmd_upgrade( req_line, req )
- when "FULLBUILD"
- handle_cmd_fullbuild( req_line, req )
when "REGISTER"
handle_cmd_register( req_line, req )
when "MONITOR"
end
- # "FULLBUILD"
- def handle_cmd_fullbuild( line, req )
- @log.info "Received REQ: #{line}"
-
- begin
- handle_cmd_fullbuild_internal( line, req )
- rescue BuildServerException => e
- @log.error(e.message)
- BuildCommServer.send(req, e.err_message())
- BuildCommServer.send_end(req)
- BuildCommServer.disconnect(req)
- end
-
- @log.info "Handled REQ: #{line}"
- end
-
-
- def handle_cmd_fullbuild_internal( line, req )
- tok = line.split("|").map { |x| x.strip }
- if tok.count < 2 then
- raise BuildServerException.new("ERR001"), line
- end
-
- server_passwd = tok[1]
- dist_name = tok[2]
- if (dist_name.nil? or dist_name.empty?) then
- dist_name = @parent_server.distmgr.get_default_distribution_name()
- end
-
- # check distribution
- check_distribution(dist_name, req, true)
-
- # check server password
- if server_passwd != @parent_server.password then
- raise BuildServerException.new("ERR015"), ""
- end
-
- # create full build job
- new_job = @parent_server.prjmgr.create_new_full_build_job(dist_name)
-
- @parent_server.jobmgr.commit_job(new_job)
-
- # set logger
- new_job.create_logger()
-
- BuildCommServer.send_end(req)
- BuildCommServer.disconnect(req)
-
- # add to job
- @parent_server.jobmgr.add_job( new_job )
- end
-
-
# "REGISTER"
def handle_cmd_register( line, req )
@log.info "Received REQ: #{line}"
add-prj Add project to build.
remove-prj Remove project.
register Register the package to the build-server.
-fullbuild Build all your projects and upload them to package server.
query Show build server configuration.
set-attr Set build server atribute.
get-attr Get build server atribute.
build-svr remove-sync -n <server name> -u <remote pkg server url> [--dist <distribution>]
build-svr add-prj -n <server name> -N <project name> (-g <git repository> -b <git branch>|-P <package name>) [-w <password>] [-o <os list>] [--dist <distribution>]
build-svr remove-prj -n <server name> -N <project name> [--dist <distribution>]
-build-svr fullbuild -n <server name> [--dist <distribution>]
build-svr register -n <server name> -P <package file> [--dist <distribution>]
build-svr query -n <server name>
build-svr set-attr -n <server name> -A <attribute> -V <value>