end
client.send "QUERY|#{sym.strip}"
result = client.receive_data()
- if result.nil? then
+ if result.nil? then
puts "Error: #{client.get_error_msg()}"
end
client.terminate
end
client = BuildCommClient.create( result[0], result[1], nil, 0 )
if not client.nil? then
- client.send "BUILD|GIT|#{option[:project]}|#{option[:passwd]}|#{option[:os]}|#{option[:async]}|#{option[:noreverse]}|#{option[:dist]}|#{option[:user]}"
+ client.send "BUILD|GIT|#{option[:project]}|#{option[:passwd]}|#{option[:os]}|#{option[:async]}|#{option[:noreverse]}|#{option[:dist]}|#{option[:user]}|#{option[:verbose]}"
if not client.print_stream then
puts "ERROR: #{client.get_error_msg()}"
end
end
client = BuildCommClient.create( result[0], result[1], nil, 0 )
if not client.nil? then
- client.send "RESOLVE|GIT|#{option[:project]}|#{option[:passwd]}|#{option[:os]}|#{option[:async]}|#{option[:dist]}|#{option[:user]}"
+ client.send "RESOLVE|GIT|#{option[:project]}|#{option[:passwd]}|#{option[:os]}|#{option[:async]}|#{option[:dist]}|#{option[:user]}|#{option[:verbose]}"
if not client.print_stream then
puts "ERROR: #{client.get_error_msg()}"
end
require 'utils'
class BuildClientUsage
- BUILD="build-cli build -N <project name> -d <server address> [-o <os>] [-w <password>] [--async] [-D <distribution name>] [-U user-email]"
- RESOLVE="build-cli resolve -N <project name> -d <server address> [-o <os>] [-w <password>] [--async] [-D <distribution name>] [-U user-email]"
+ BUILD="build-cli build -N <project name> -d <server address> [-o <os>] [-w <password>] [--async] [-D <distribution name>] [-U user-email] [-V]"
+ RESOLVE="build-cli resolve -N <project name> -d <server address> [-o <os>] [-w <password>] [--async] [-D <distribution name>] [-U user-email] [-V]"
QUERY="build-cli query -d <server address>"
QUERY_SYSTEM="build-cli query-system -d <server address>"
QUERY_PROJECT="build-cli query-project -d <server address>"
options[:user] = user
end
+ options[:verbose] = "NO"
+ opts.on( '-V', '--verbose', 'verbose mode' ) do
+ options[:verbose] = "YES"
+ end
+
opts.on( '-h', '--help', 'display help' ) do
opts.help.split("\n").each {|op| puts op if not op.include? "--noreverse"}
exit
class JobLog < Log
- def initialize(job, stream_out)
+ def initialize(job, stream_out, verbose = false)
+ log_level = (verbose) ? Log::LV_NORMAL : Log::LV_USER
if job.nil? then
super(nil)
else
if not File.exist? "#{job.server.path}/jobs/#{job.id}" then
FileUtils.mkdir_p "#{job.server.path}/jobs/#{job.id}"
end
- super("#{job.server.path}/jobs/#{job.id}/log")
+ super("#{job.server.path}/jobs/#{job.id}/log",log_level)
end
@parent_job=job
@second_out = stream_out
# send build request
@log.info( "Sending build request to remote server...", Log::LV_USER )
result, result_files = send_build_request(git_repos, os, is_rev_build,
- srcinfo, no_reverse, local_pkgs, dock, dist_name, user_email)
+ srcinfo, no_reverse, local_pkgs, dock, dist_name, user_email, @log.is_verbose)
@log.info( "Receiving log file from remote server...", Log::LV_USER )
if not receive_file_from_remote( "#{source_path}/../remote_log", dock ) then
# send build request
protected
- def send_build_request(git_repos, os, is_rev_build, commit, no_reverse, local_pkgs, dock, dist_name, user_email)
+ def send_build_request(git_repos, os, is_rev_build, commit, no_reverse, local_pkgs, dock, dist_name, user_email, verbose)
result_files = []
client = BuildCommClient.create( @addr, @port, @log )
local_pkg_names = local_pkgs.map { |path| File.basename(path) }
# send
- # format: BUILD|GIT|repository|passwd|os|async|no_reverse|internal|rev-build|commit|pkgs|dock_num|dist_name|user_email
- # value : BUILD|GIT|repository| |os|NO |no_reverse|YES |rev-build|commit|pkgs|dock_num|dist_name|user_email
+ # 0 | 1 | 2 | 3 | 4| 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14
+ # format: BUILD|GIT|repository|passwd|os|async|no_reverse|dist_name|user_email|verbose|internal|rev-build|commit|pkgs|dock_num
+ # value : BUILD|GIT|repository| |os|NO |no_reverse|dist_name|user_email|verbose|YES |rev-build|commit|pkgs|dock_num
result = true
commit = commit.nil? ? "":commit
pkg_list = local_pkg_names.join(",")
rev = is_rev_build ? "YES":"NO"
- msg = "BUILD|GIT|#{git_repos}||#{os}|NO|#{no_reverse}|YES|#{rev}|#{commit}|#{pkg_list}|#{dock}|#{dist_name}|#{user_email}"
+ msg = "BUILD|GIT|#{git_repos}||#{os}|NO|#{no_reverse}|#{dist_name}|#{user_email}|#{verbose}|YES|#{rev}|#{commit}|#{pkg_list}|#{dock}"
result = client.send( msg )
if not result then
@log.error( "Communication failed! #{client.get_error_msg()}", Log::LV_USER)
raise "Invalid request format is used: #{line}"
end
- # Case1. BUILD|GIT|project_name|passwd|os_list|async|no_reverse|dist_name|user_email
- # Case2. BUILD|GIT|git_repos||os|async|no_reverse|internal|rev_build|commit|pkgs|dock_num|dist_name|user_email
+ # 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14
+ # Case1. BUILD|GIT|project_name|passwd|os_list|async|no_reverse|dist_name|user_email|verbose
+ # Case2. BUILD|GIT|git_repos | |os |async|no_reverse|dist_name|user_email|verbose|internal|rev_build|commit|pkgs|dock_num
# parse
project_name_list = tok[2].split(",")
os_list = tok[4].split(",")
async = tok[5].eql? "YES"
no_reverse = tok[6].eql? "YES"
- is_internal = tok[7].eql? "YES"
- rev_job = tok[8].eql? "YES"
- git_commit = (not tok[9].nil? and not tok[9].empty?) ? tok[9] : nil
- pkg_files = (not tok[10].nil? and not tok[10].empty?) ? tok[10].split(",") : []
- dock_num = (not tok[11].nil? and not tok[11].empty?) ? tok[11].strip : "0"
- if not is_internal then
- dist_name = tok[7].strip
- user_email = tok[8].strip
- else
- dist_name = tok[12].strip
- user_email = tok[13].strip
- end
+ dist_name = tok[7].strip
+ user_email = tok[8].strip
+ verbose = tok[9].eql? "YES"
+ is_internal = tok[10].eql? "YES"
+ rev_job = tok[11].eql? "YES"
+ git_commit = (not tok[12].nil? and not tok[12].empty?) ? tok[12] : nil
+ pkg_files = (not tok[13].nil? and not tok[13].empty?) ? tok[13].split(",") : []
+ dock_num = (not tok[14].nil? and not tok[14].empty?) ? tok[14].strip : "0"
if (dist_name.nil? or dist_name.empty?) then
dist_name = @parent_server.distmgr.get_default_distribution_name()
end
if no_reverse then new_job.set_no_reverse end
# create logger and set
- logger = JobLog.new( new_job, req )
+ logger = JobLog.new( new_job, req, verbose )
if not async then new_job.set_logger(logger) end
logger.init
end
case tok[1]
- # RESOLVE|GIT|repos|commit|os|async
+ # RESOLVE|GIT|project_name|passwd|os|async|dist_name|user_email|verbose
when "GIT"
# parse
project_name=tok[2]
os=tok[4]
async = tok[5].eql? "YES"
dist_name = tok[6]
+ user_email = tok[7].strip
+ verbose = tok[8].eql? "YES"
if (dist_name.nil? or dist_name.empty?) then
dist_name = @parent_server.distmgr.get_default_distribution_name()
end
end
@log.info "Received a request for resolving this project : #{project_name}, #{os}"
+ # check user email
+ user_id = @parent_server.check_user_id_from_email( user_email )
+ if user_id != -1 then
+ new_job.user_id = user_id
+ else
+ BuildCommServer.send_begin(req)
+ req.puts "Error: Cannot find the user with \"#{user_email}\"!"
+ BuildCommServer.send_end(req)
+ raise "No user information!"
+ end
+
# resolve
new_job.set_resolve_flag()
# create logger and set
- logger = JobLog.new( new_job, req )
+ logger = JobLog.new( new_job, req, verbose )
if not async then new_job.set_logger(logger) end
logger.init
new_job = @parent_server.prjmgr.create_new_full_build_job(dist_name)
# set logger
- logger = JobLog.new( new_job, req )
+ logger = JobLog.new( new_job, req)
new_job.set_logger(logger)
logger.init
@second_out= nil
end
+ def is_verbose
+ return @second_out_level.eql? Log::LV_NORMAL
+ end
+
protected
def output_extra(msg)
register Register the package to the build-server.
Subcommand usage:
-build-cli build -N <project name> -d <server address> [-o <os>] [-w <password>] [--async] [-D <distribution name>] [-U user-email]
-build-cli resolve -N <project name> -d <server address> [-o <os>] [-w <password>] [--async] [-D <distribution name>] [-U user-email]
+build-cli build -N <project name> -d <server address> [-o <os>] [-w <password>] [--async] [-D <distribution name>] [-U user-email] [-V]
+build-cli resolve -N <project name> -d <server address> [-o <os>] [-w <password>] [--async] [-D <distribution name>] [-U user-email] [-V]
build-cli query -d <server address>
build-cli query-system -d <server address>
build-cli query-project -d <server address>
-D, --dist <distribution name> distribution name
-t, --ftp <ftp server url> ftp server url: ftp://dibsftp:dibsftp@127.0.0.1
-U, --user <user email> user email infomation
+-V, --verbose verbose mode
-h, --help display help
-v, --version display version