From: jiil.hyoun Date: Thu, 8 Nov 2012 10:40:35 +0000 (+0900) Subject: [Title] support remote build using email X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2896f66ac4fdbcd17da573aaea067091d72bd403;p=sdk%2Ftools%2Fsdk-build.git [Title] support remote build using email [Type] Enhancement [Module] Toolchain / [Priority] Major [Jira#] [Redmine#] [Problem] [Cause] [Solution] [TestCase] Change-Id: I2cafde8edef80dd52eb0b77e69b30f7c23b7bcf1 --- diff --git a/src/build_server/BuildServer.rb b/src/build_server/BuildServer.rb index 30133b2..88e199a 100644 --- a/src/build_server/BuildServer.rb +++ b/src/build_server/BuildServer.rb @@ -606,7 +606,7 @@ class BuildServer if not row.nil? then return row['id'] else - return -1 + return -1 end end @@ -614,6 +614,19 @@ class BuildServer end + def get_email_using_user_id(user_id) + get_db_connection() do |db| + row = db.select_one("SELECT * FROM users WHERE id='#{user_id}'") + if not row.nil? then + return row['email'] + else + return -1 + end + end + return -1 + end + + def qualify_admin_to_access(prj_id) get_db_connection() do |db| row = db.select_one("SELECT * FROM group_project_accesses WHERE group_id=0 and prj_id=#{prj_id}") diff --git a/src/build_server/CommonJob.rb b/src/build_server/CommonJob.rb index e8faf78..b46b406 100644 --- a/src/build_server/CommonJob.rb +++ b/src/build_server/CommonJob.rb @@ -34,7 +34,7 @@ require "utils.rb" class CommonJob - attr_accessor :id, :server, :log, :os, :type, :pre_jobs, :status + attr_accessor :id, :server, :log, :os, :type, :pre_jobs, :status, :user_id # initialize public @@ -119,10 +119,9 @@ class CommonJob @project = project end - public - def set_user_id( id ) - @user_id = id + def get_user_email + return @server.get_email_using_user_id(@user_id) end diff --git a/src/build_server/RemoteBuilder.rb b/src/build_server/RemoteBuilder.rb index 6f44d53..1d03db6 100644 --- a/src/build_server/RemoteBuilder.rb +++ b/src/build_server/RemoteBuilder.rb @@ -63,7 +63,7 @@ class RemoteBuilder # build 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.get_project().dist_name ) + local_pkgs, @job.get_project().dist_name,@job.get_user_email ) # reset job @job = nil @@ -75,7 +75,7 @@ class RemoteBuilder # build - def build( git_repos, source_path, os, is_rev_build, srcinfo, no_reverse, local_pkgs, dist_name ) + def build( git_repos, source_path, os, is_rev_build, srcinfo, no_reverse, local_pkgs, dist_name, user_email ) @log.info( "Start to build on remote server...", Log::LV_USER ) # create unique dock number @@ -99,8 +99,8 @@ class RemoteBuilder # 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) + result, result_files = send_build_request(git_repos, os, is_rev_build, + srcinfo, no_reverse, local_pkgs, dock, dist_name, user_email) @log.info( "Receiving log file from remote server...", Log::LV_USER ) if not receive_file_from_remote( "#{source_path}/../remote_log", dock ) then @@ -163,7 +163,7 @@ class RemoteBuilder # send build request protected - def send_build_request(git_repos, os, is_rev_build, commit, no_reverse, local_pkgs, dock = "0", dist_name="BASE") + def send_build_request(git_repos, os, is_rev_build, commit, no_reverse, local_pkgs, dock, dist_name, user_email) result_files = [] client = BuildCommClient.create( @addr, @port, @log ) @@ -176,13 +176,13 @@ class RemoteBuilder 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 - # value : BUILD|GIT|repository| |os|NO |no_reverse|YES |rev-build|commit|pkgs|dock_num|dist_name + # 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 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}" + msg = "BUILD|GIT|#{git_repos}||#{os}|NO|#{no_reverse}|YES|#{rev}|#{commit}|#{pkg_list}|#{dock}|#{dist_name}|#{user_email}" result = client.send( msg ) if not result then @log.error( "Communication failed! #{client.get_error_msg()}", Log::LV_USER) diff --git a/src/build_server/SocketJobRequestListener.rb b/src/build_server/SocketJobRequestListener.rb index 1ca0714..51b66ce 100644 --- a/src/build_server/SocketJobRequestListener.rb +++ b/src/build_server/SocketJobRequestListener.rb @@ -277,7 +277,7 @@ class SocketJobRequestListener # check user email user_id = @parent_server.check_user_id_from_email( user_email ) if user_id != -1 then - new_job.set_user_id( user_id ) + new_job.user_id = user_id else BuildCommServer.send_begin(req) req.puts "Error: Cannot find the user with \"#{user_email}\"!"