From: donghee yang Date: Mon, 8 Oct 2012 07:24:34 +0000 (+0900) Subject: [Title] Fixed a bug that remote build does not work X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b097e1b76c4c94fd898385f694b9defed3e74d2c;p=sdk%2Ftools%2Fsdk-build.git [Title] Fixed a bug that remote build does not work --- diff --git a/src/build_server/BuildJob.rb b/src/build_server/BuildJob.rb index 1fe8050..ed0e900 100644 --- a/src/build_server/BuildJob.rb +++ b/src/build_server/BuildJob.rb @@ -62,9 +62,15 @@ class BuildJob < CommonJob @cancel_state = "NONE" @resolve = false @host_os = Utils::HOST_OS - @pkgsvr_url = @server.distmgr.get_distribution(project.dist_name).pkgsvr_url - @pkgsvr_ip = @server.distmgr.get_distribution(project.dist_name).pkgsvr_ip - @pkgsvr_port = @server.distmgr.get_distribution(project.dist_name).pkgsvr_port + if not @server.distmgr.nil? then + @pkgsvr_url = @server.distmgr.get_distribution(project.dist_name).pkgsvr_url + @pkgsvr_ip = @server.distmgr.get_distribution(project.dist_name).pkgsvr_ip + @pkgsvr_port = @server.distmgr.get_distribution(project.dist_name).pkgsvr_port + else + @pkgsvr_url = "" + @pkgsvr_ip = "" + @pkgsvr_port = "" + end @job_root = "#{@server.path}/jobs/#{@id}" @source_path = @job_root+"/temp" @job_working_dir=@job_root+"/works" diff --git a/src/build_server/CommonJob.rb b/src/build_server/CommonJob.rb index c1e6a9d..6a442f8 100644 --- a/src/build_server/CommonJob.rb +++ b/src/build_server/CommonJob.rb @@ -38,8 +38,12 @@ class CommonJob # initialize public def initialize(server, id=nil) - @id = server.jobmgr.get_new_job_id() @server = server + if not server.jobmgr.nil? then + @id = server.jobmgr.get_new_job_id() + else + @id = 0 + end @parent = nil @sub_jobs = [] diff --git a/src/build_server/GitBuildJob.rb b/src/build_server/GitBuildJob.rb index d2ef094..516b5cd 100644 --- a/src/build_server/GitBuildJob.rb +++ b/src/build_server/GitBuildJob.rb @@ -37,6 +37,7 @@ require "utils.rb" $git_mutex = Mutex.new class GitBuildJob < BuildJob + attr_accessor :git_commit, :git_branch, :git_repos # initialize def initialize( project, os, server ) @@ -197,11 +198,6 @@ class GitBuildJob < BuildJob end - def set_git_commit( commit ) - @git_commit = commit - end - - # # PROTECTED/PRIVATE METHODS # diff --git a/src/build_server/GitBuildProject.rb b/src/build_server/GitBuildProject.rb index 67a1bbc..050cd28 100644 --- a/src/build_server/GitBuildProject.rb +++ b/src/build_server/GitBuildProject.rb @@ -78,7 +78,7 @@ class GitBuildProject < CommonProject commit = get_commit_id( version ) if not commit.nil? then - new_job.set_git_commit( commit ) + new_job.git_commit = commit end return new_job diff --git a/src/build_server/ProjectManager.rb b/src/build_server/ProjectManager.rb index 338a8ea..f8bf733 100644 --- a/src/build_server/ProjectManager.rb +++ b/src/build_server/ProjectManager.rb @@ -297,7 +297,7 @@ class ProjectManager # load def load_db() - @project = [] + @projects = [] db_file = "#{BuildServer::CONFIG_ROOT}/#{@server.id}/server.db" begin @@ -339,7 +339,6 @@ class ProjectManager end new_project.load_db() - @projects.push new_project } rescue SQLite3::Exception => e diff --git a/src/build_server/RemoteBuildServer.rb b/src/build_server/RemoteBuildServer.rb index ba43e12..7e538ce 100644 --- a/src/build_server/RemoteBuildServer.rb +++ b/src/build_server/RemoteBuildServer.rb @@ -36,6 +36,7 @@ class RemoteBuildServer attr_accessor :ip, :port, :status, :host_os attr_accessor :max_working_jobs, :working_jobs, :waiting_jobs attr_accessor :path + attr_accessor :jobmgr, :distmgr # initialize def initialize(ip, port, parent) @@ -49,6 +50,8 @@ class RemoteBuildServer @path = "" @file_transfer_cnt_mutex = Mutex.new @file_transfer_cnt = 0 + @jobmgr = nil + @distmgr = nil end diff --git a/src/build_server/RemoteBuilder.rb b/src/build_server/RemoteBuilder.rb index 7a945bd..ba1a422 100644 --- a/src/build_server/RemoteBuilder.rb +++ b/src/build_server/RemoteBuilder.rb @@ -59,9 +59,9 @@ class RemoteBuilder @log = job.log # build - ret = build(@job.project.repository, @job.source_path, @job.os, + ret = build(@job.get_project().repository, @job.source_path, @job.os, @job.is_rev_build_check_job(), @job.git_commit, @job.no_reverse, - local_pkgs, @job.project.dist_name ) + local_pkgs, @job.get_project().dist_name ) # reset job @job = nil diff --git a/src/build_server/SocketJobRequestListener.rb b/src/build_server/SocketJobRequestListener.rb index 012770a..53648e1 100644 --- a/src/build_server/SocketJobRequestListener.rb +++ b/src/build_server/SocketJobRequestListener.rb @@ -896,7 +896,7 @@ class SocketJobRequestListener end new_job = prj.create_new_job(os) new_job.set_internal_job( dock_num ) - new_job.set_git_commit(git_commit) + new_job.git_commit = git_commit incoming_dir = "#{@parent_server.transport_path}/#{dock_num}" pkg_files.each { |file| new_job.add_external_package( file ) diff --git a/test/build-server.multi-svr1/01.testcase b/test/build-server.multi-svr1/01.testcase new file mode 100644 index 0000000..21843e1 --- /dev/null +++ b/test/build-server.multi-svr1/01.testcase @@ -0,0 +1,45 @@ +#PRE-EXEC +#EXEC +../../build-cli build -N testa -d 127.0.0.1:2223 -o ubuntu-32 -D unstable +#POST-EXEC +#EXPECT +Info: Added new job +Info: Initializing job... +Info: Checking package version ... +Info: Invoking a thread for building Job +Info: New Job +Info: Started to build this job... +Info: JobBuilder# +Info: Start to build on remote server... +Info: Sending build request to remote server... +Info: Added new job +Info: Initializing job... +Info: Copying external dependent pkgs... +Info: Invoking a thread for building Job +Info: New Job +Info: Started to build this job... +Info: JobBuilder +Info: Downloding client is initializing... +Info: Installing dependent packages... +Info: Downloading dependent source packages... +Info: Make clean... +Info: Make build... +Info: Make install... +Info: Generatiing pkginfo.manifest... +Info: Zipping... +Info: Creating package file ... a_0.0.1_ubuntu-32.zip +Info: Copying log to +Info: Copying result files to +Info: * +Info: Job is completed! +Info: Job is FINISHED successfully! +Info: Updating the source info for project "UNNAMED +Info: Receiving log file from remote server... +Info: Receiving file from remote server : a_0.0.1_ubuntu-32.zip +Info: Checking reverse build dependency ... +Info: Uploading ... +Info: Upload succeeded. Sync local pkg-server again... +Info: Snapshot: +Info: Job is completed! +Info: Job is FINISHED successfully! +Info: Updating the source info for project "testa" diff --git a/test/build-server.multi-svr1/02.testcase b/test/build-server.multi-svr1/02.testcase new file mode 100644 index 0000000..cbe7440 --- /dev/null +++ b/test/build-server.multi-svr1/02.testcase @@ -0,0 +1,46 @@ +#PRE-EXEC +#EXEC +../../build-cli build -N testb -d 127.0.0.1:2223 -o ubuntu-32 -D unstable +#POST-EXEC +#EXPECT +Info: Added new job +Info: Initializing job... +Info: Checking package version ... +Info: Invoking a thread for building Job +Info: New Job +Info: Started to build this job... +Info: JobBuilder +Info: Start to build on remote server... +Info: Sending build request to remote server... +Info: Added new job +Info: Initializing job... +Info: Copying external dependent pkgs... +Info: Invoking a thread for building Job +Info: New Job +Info: Started to build this job... +Info: JobBuilder +Info: Downloding client is initializing... +Info: Installing dependent packages... +Info: * a +Info: Downloading dependent source packages... +Info: Make clean... +Info: Make build... +Info: Make install... +Info: Generatiing pkginfo.manifest... +Info: Zipping... +Info: Creating package file ... b_0.0.1_ubuntu-32.zip +Info: Copying log to +Info: Copying result files to +Info: * +Info: Job is completed! +Info: Job is FINISHED successfully! +Info: Updating the source info for project "UNNAMED +Info: Receiving log file from remote server... +Info: Receiving file from remote server : b_0.0.1_ubuntu-32.zip +Info: Checking reverse build dependency ... +Info: Uploading ... +Info: Upload succeeded. Sync local pkg-server again... +Info: Snapshot: +Info: Job is completed! +Info: Job is FINISHED successfully! +Info: Updating the source info for project "testb" diff --git a/test/build-server.multi-svr1/buildsvr1.init b/test/build-server.multi-svr1/buildsvr1.init new file mode 100755 index 0000000..c6194fd --- /dev/null +++ b/test/build-server.multi-svr1/buildsvr1.init @@ -0,0 +1,31 @@ +#!/bin/sh + +rm -rf buildsvr01 +rm -rf git01 +rm -rf bin +rm -rf ~/.build_tools/build_server/testserver3 + +../../build-svr remove -n testserver3 +mkdir buildsvr01 +cd buildsvr01 +ruby -d ../../../build-svr create -n testserver3 -t ftp://ftpuser:ftpuser@127.0.0.1 +cd .. + +ruby -d ../../build-svr add-dist -n testserver3 -D unstable -u `pwd`/pkgsvr01/unstable -d 127.0.0.1:3333 +ruby -d ../../build-svr add-svr -n testserver3 -d 127.0.0.1:2224 +ruby -d ../../build-svr add-os -n testserver3 -o ubuntu-32 +ruby -d ../../build-svr add-os -n testserver3 -o windows-32 +ruby -d ../../build-svr add-prj -n testserver3 -N testa -g `pwd`/git01/a -b master +ruby -d ../../build-svr add-prj -n testserver3 -N testb -g `pwd`/git01/b -b master +ruby -d ../../build-svr set-attr -n testserver3 -A MAX_WORKING_JOBS -V 0 + +mkdir -p git01 +cp ../git01/*.tar.gz git01/ +cd git01 +rm -rf a +rm -rf b +tar xvf a_v1.tar.gz +tar xvf b_v1.tar.gz +cd .. + +ruby -d ../../build-svr start -n testserver3 -p 2223 --CHILD diff --git a/test/build-server.multi-svr1/buildsvr2.init b/test/build-server.multi-svr1/buildsvr2.init new file mode 100755 index 0000000..d8e87d8 --- /dev/null +++ b/test/build-server.multi-svr1/buildsvr2.init @@ -0,0 +1,11 @@ +#!/bin/sh +rm -rf buildsvr02 + +../../build-svr remove -n testserver4 +mkdir buildsvr02 +cd buildsvr02 +ruby -d ../../../build-svr create -n testserver4 -t ftp://ftpuser:ftpuser@127.0.0.1 +cd .. +ruby -d ../../build-svr add-dist -n testserver4 -D unstable -u `pwd`/pkgsvr01/unstable -d 127.0.0.1:3333 + +ruby -d ../../build-svr start -n testserver4 -p 2224 --CHILD diff --git a/test/build-server.multi-svr1/pkgsvr.init b/test/build-server.multi-svr1/pkgsvr.init new file mode 100755 index 0000000..26c9ef6 --- /dev/null +++ b/test/build-server.multi-svr1/pkgsvr.init @@ -0,0 +1,7 @@ +#!/bin/sh +rm -rf ~/.build_tools/pkg_server/pkgsvr01 +rm -rf `pwd`/pkgsvr01 +ruby -d ../../pkg-svr create -n pkgsvr01 -d unstable +ruby -d ../../pkg-svr add-os -n pkgsvr01 -d unstable -o ubuntu-32 +ruby -d ../../pkg-svr add-os -n pkgsvr01 -d unstable -o windows-32 +ruby -d ../../pkg-svr start -n pkgsvr01 -p 3333 diff --git a/test/build-server.multi-svr1/testsuite b/test/build-server.multi-svr1/testsuite new file mode 100644 index 0000000..960eff3 --- /dev/null +++ b/test/build-server.multi-svr1/testsuite @@ -0,0 +1,2 @@ +01.testcase +02.testcase diff --git a/test/buildsvr2.init b/test/buildsvr2.init deleted file mode 100755 index 8f19780..0000000 --- a/test/buildsvr2.init +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -rm -rf buildsvr02 -mkdir buildsvr02 -cd buildsvr02 -../../build-svr remove -n testserver4 -../../build-svr create -n testserver4 -u `pwd`/../pkgsvr01/unstable -d 127.0.0.1:3333 -t ftp://ftpuser:ftpuser@127.0.0.1 -cd .. -../build-svr start -n testserver4 -p 2224