for pkg in @pkginfo.packages
# check all supported os
for os in @server.supported_os_list
- ver_svr = @pkgsvr_client.get_attr_from_pkg( pkg.package_name, @os, "version")
+ ver_svr = @pkgsvr_client.get_attr_from_pkg( pkg.package_name, os, "version")
# ignore if package does not exist
if ver_svr.nil? then next end
end
- # build projects that dependes on me
- # can ignore some projects
- def check_reverse_build( ignored_projects, exit_on_error)
- @log.info( "Checking reverse build dependency ...", Log::LV_USER)
-
- failed_projects = []
-
- # get reverse-dependent projects
- rev_pkgs = []
- for pkg in @pkginfo.get_target_packages(@os)
- rev_pkgs += @pkgsvr_client.get_reverse_build_dependent_packages(pkg.package_name, @os)
- end
- rev_pkgs.uniq!
- rev_projects = @server.prjmgr.get_projects_from_pkgs(rev_pkgs)
- for ip in ignored_projects
- for rp in rev_projects
- if rp[0] == ip[0] and rp[1] == ip[1] then
- rev_projects.delete rp
- end
- end
- end
-
- # create reverse build job
- rev_build_jobs = []
- for p in rev_projects
- prj = p[0]
- os = p[1]
- version = p[2]
-
- # check project type
- if prj.type != "GIT" then next end
-
- # if this is sub job, the job exists in parent job must be ignored
- if is_sub_job? then
- job_found = false
- for job in @parent.get_sub_jobs
- sprj = job.get_project()
- if sprj.name == prj.name and job.os == os then
- job_found = true
- break
- end
- end
-
- if job_found then next end
- end
-
- # create job
- new_job = prj.create_new_job_from_version(os, version)
- new_job.set_rev_build_check_job(self)
-
- rev_build_jobs.push new_job
- end
-
- # reverse build
- if rev_build_jobs.count > 0 then
- rev_prjs_txt = rev_build_jobs.map {|j| "#{j.get_project().name}(#{j.os})"}.join(", ")
- @log.info( " * Will check reverse-build for projects: #{rev_prjs_txt}", Log::LV_USER)
- end
- for new_job in rev_build_jobs
- @log.info( " * Checking reverse-build ... #{new_job.get_project().name}(#{new_job.id})", Log::LV_USER)
- # job init
- result = new_job.init()
- # if init is succeeded!, try to execute
- if result then
- # check available server
- rserver = @server.get_available_server( new_job )
- if rserver != nil and rserver != @server then
- new_job.set_remote_job( rserver )
- end
- # execute
- new_job.execute(true)
- if new_job.status == "ERROR" then result = false end
- end
-
- # check result
- if not result then
- failed_projects.push [new_job.get_project(), new_job.os]
- if exit_on_error then
- return failed_projects
- end
- end
- end
-
- return failed_projects
- end
-
-
# wait to be resolved by other jobs
def wait_resolve()
@log.info( "Started to build this job and wait for being resolved...", Log::LV_USER)
# set up pkgsvr_client
@pkgsvr_client = Client.new(@pkgserver_url, @job_working_dir, @log)
- # checking version if not reverse-build job
- if not @is_rev_build_check_job and not @is_remote_job and
- not check_package_version(@git_commit) then
-
- @status = "ERROR"
- return false
- end
+ # checking version if not reverse-build job or not internal-job
+ if not @is_rev_build_check_job and not @is_internal_job then
+ # check availabiltiy
+ if not @server.check_job_availability( self ) then
+ @log.error( "No servers that are able to build your packages.", Log::LV_USER)
+ @log.error( "Host-OS (#{@os}) is not supported in build server.", Log::LV_USER)
+ @status = "ERROR"
+ @server.log.info "Adding the job \"#{@id}\" is canceled"
+ return false
+ end
- # check availabiltiy
- if not @server.check_job_availability( self ) then
- @log.error( "No servers that are able to build your packages.", Log::LV_USER)
- @log.error( "Host-OS (#{@os}) is not supported in build server.", Log::LV_USER)
- @status = "ERROR"
- @server.log.info "Adding the job \"#{@id}\" is canceled"
+ if not check_package_version(@git_commit) then
+ @status = "ERROR"
+ return false
+ end
end
return true
name = "UNNAMED_PRJ_#{@projects.count}"
branch = "master"
passwd = nil
- os_list = @server.supported_os_list
+ os_list = Utils.get_all_OSs()
# add
add_git_project(name , repos, branch, passwd, os_list)
# get
git_commit = (not tok[8].nil? and not tok[8].empty?) ? tok[8] : nil
pkg_files = (not tok[9].nil? and not tok[9].empty?) ? tok[9].split(",") : []
- # check supported os
- os_list = check_supported_os( os_list , req )
- if os_list.nil? or os_list.empty? then
- raise "Unsupported OS name is used!"
+ # check supported os if not internal job
+ if not is_internal then
+ os_list = check_supported_os( os_list , req )
+ if os_list.nil? or os_list.empty? then
+ raise "Unsupported OS name is used!"
+ end
end
# multi build job
def Utils.check_host_OS()
- if HOST_OS == "ubuntu-32" or
- HOST_OS == "ubuntu-64" or
- HOST_OS == "windows-32" or
- HOST_OS == "windows-64" or
- HOST_OS == "macos-64" then
-
+ if Utils.get_all_OSs().include? HOST_OS then
return true
else
return false
end
+ def Utils.get_all_OSs()
+ return ["ubuntu-32","ubuntu-64","windows-32","windows-64","macos-64"]
+ end
+
+
def Utils.create_uniq_name
time = Time.new
# uniq snapshot_name name is year_month_day_hour_min_sec_microsec
../build-cli build -N testa -d 127.0.0.1:2223 -o windows-32
#POST-EXEC
#EXPECT
-Info: Added new job
+Info: Added new job "5" for windows-32!
Info: Initializing job...
-Info: Checking package version ...
Error: No servers that are able to build your packages.
Error: Host-OS (windows-32) is not supported in build server.
Error: Job is stopped by ERROR