begin
while(true)
log.info "Build Server[#{option[:name]}] Start - PORT: [#{option[:port]}]"
+
+ # set port option
+ port_option = ((option[:port] != "") and (option[:port] != nil)) ? "-p #{option[:port]}" : ""
+
# Start child process
- cmd = Utils.generate_shell_command("#{File.dirname(__FILE__)}/build-svr start -n #{option[:name]} -p #{option[:port]} --CHILD")
+ cmd = Utils.generate_shell_command("#{File.dirname(__FILE__)}/build-svr start -n #{option[:name]} #{port_option} --CHILD")
io = IO.popen(cmd)
- puts io.readlines()
+ puts io.readlines()
pid = Process.wait
log.info "Down Build Server."
break
elsif ($?.exitstatus == 99) then # DIBS UPGRADE
- cmd = "#{File.dirname(__FILE__)}/upgrade -l #{File.dirname(__FILE__)} -S -t BUILDSERVER -n #{option[:name]} -p #{option[:port]}"
+ cmd = "#{File.dirname(__FILE__)}/upgrade -l #{File.dirname(__FILE__)} -S -t BUILDSERVER -n #{option[:name]} #{port_option}"
if File.exist? "#{BuildServer::CONFIG_ROOT}/#{option[:name]}/upgrade_dist" then
File.open("#{BuildServer::CONFIG_ROOT}/#{option[:name]}/upgrade_dist","r") do |f|
f.each_line do |l|
attr_accessor :id, :path, :status, :host_os, :log
attr_accessor :remote_servers
attr_accessor :git_server_url, :git_bin_path
+ attr_accessor :config_port
attr_accessor :allowed_git_branch
attr_accessor :jobmgr
attr_accessor :test_time
def initialize (id, path, ftpsvr_addr, ftpsvr_port, ftpsvr_username, ftpsvr_passwd)
@id = id
@path = path
- @run_file_path = File.join(BuildServer::CONFIG_ROOT, @id, "run")
+ @run_file_path = File.join(BuildServer::CONFIG_ROOT, @id, "run")
@remote_servers = []
@req_listener = []
@finish = false
@running_port = nil
+ @config_port = nil
# status
@status = "INITIALIZING"
# host_os
@pkg_sync = PackageServerSynchronizer.new(self)
@pkg_sync.start
end
-
+
# update friend server status
@log.info "Initializing Remote Servers..."
if has_db? then
server.create_system_monitor()
end
end
-
+
# main loop
@log.info "Entering main loop..."
@status = "RUNNING"
# create new instance and return it
@@instance_map[id] = BuildServer.new( id, path, ftpsvr_addr, ftpsvr_port, ftpsvr_username, ftpsvr_passwd)
+
# set default
if Utils.is_windows_like_os(Utils::HOST_OS) then
@@instance_map[id].git_bin_path="/c/Program\\ Files/Git/bin/git.exe"
else
@@instance_map[id].git_bin_path="/usr/bin/git"
end
+
+ # set default server port
+ default_port = 2222
+ @@instance_map[id].port = default_port
# write config
write_server_config( @@instance_map[id] )
@@instance_map[id].log = Log.new( "#{BuildServer::CONFIG_ROOT}/#{id}/log" )
puts "Created new build server: \"#{id}\""
+ puts " - server location : #{path}"
+ puts " - server configure file : #{BuildServer::CONFIG_ROOT}/#{id}/server.cfg"
+ puts " - default server port : #{default_port}"
+
return @@instance_map[id]
end
# start server
- def self.start_server( id, port = 2222 )
+ def self.start_server( id, port )
server = get_server(id)
if server.has_db? then
server.jobmgr.cancel_broken_status
end
- # write run port
server_dir = "#{BuildServer::CONFIG_ROOT}/#{server.id}"
- f = File.open( "#{server_dir}/run", "w" )
- f.puts port
- f.close
+
+ # if user input exsist, set user's port number.
+ if (port != "") and (port != nil) then
+ # update server port information
+ original_string = "SERVER_PORT=#{server.config_port}"
+ replacement_string = "SERVER_PORT=#{port}"
+ contents = File.read("#{server_dir}/server.cfg").gsub("#{original_string}", "#{replacement_string}")
+
+ # write to config file
+ File.open("#{server_dir}/server.cfg", "w") { |f| f.puts contents }
+ # update to db
+ server.port = port
+ else # if user input not exsist, set config file's port number.
+ server.port = server.config_port
+ end
+
+ # write run port
+ File.open( "#{server_dir}/run", "w" ) { |f| f.puts server.port }
# start
- server.port = port
if server.has_db? then
server.save_id_to_db(server.id)
server.save_path_to_db(server.path)
f.puts "ID=#{server.id}"
f.puts "PATH=#{server.path}"
f.puts "GIT_BIN_PATH=#{server.git_bin_path}"
+ f.puts "SERVER_PORT=#{server.port}"
f.puts "TEST_TIME=#{server.test_time}" if server.test_time > 0
f.puts "PASSWORD=#{server.test_time}" if server.password != "0000"
if not server.ftp_addr.nil? then
def self.read_server_config( id )
path=""
git_bin_path="/usr/bin/git"
+ running_port=nil
+ config_port=nil
test_time=0
password="0000"
ftp_addr=nil
path = l[idx,length].strip
elsif l.start_with?("GIT_BIN_PATH=")
git_bin_path = l[idx,length].strip
+ elsif l.start_with?("SERVER_PORT=")
+ config_port = l[idx,length].strip.to_i
elsif l.start_with?("TEST_TIME=")
test_time = l[idx,length].strip.to_i
elsif l.start_with?("PASSWORD=")
# create server object
obj = BuildServer.new( id, path, ftp_addr, ftp_port, ftp_username, ftp_passwd )
- # check running port
+ # get running port
if File.exist? "#{server_dir}/run" then
f = File.open( "#{server_dir}/run", "r" )
l = f.gets
- obj.port = l.strip.to_i
+ running_port = l.strip.to_i
f.close
end
+ # set port information
+ obj.port = running_port if (running_port != nil)
+ obj.config_port = config_port
+
# set git binary path
obj.git_bin_path = git_bin_path
CREATE="build-svr create -n <server name> [-t <ftp server url>]"
REMOVE="build-svr remove -n <server name>"
MIGRATE="build-svr migrate -n <server name> [--dsn <db dsn> [--dbuser <db_user> --dbpassword <db_password>] ]"
- START="build-svr start -n <server name> -p <port>"
+ START="build-svr start -n <server name> [-p <port>]"
STOP="build-svr stop -n <server name>"
UPGRADE="build-svr upgrade -n <server name> [-D <distribution name>]"
ADD_SVR="build-svr add-svr -n <server name> -d <friend server address>"
end
when "start"
- if options[:name].nil? or options[:name].empty? or
- options[:port].nil? then
+ if options[:name].nil? or options[:name].empty? then
raise ArgumentError, "Usage: " + BuildServerUsage::START
end
options[:domain] = domain
end
- options[:port] = 2222
+ options[:port] = nil
opts.on( '-p', '--port <port>', 'server port number: 2224' ) do|port|
options[:port] = port.strip.to_i
end