def upload()
- @log.info( "Uploading ...", Log::LV_USER)
+ begin
+ add_timestamp("UPLOAD_START")
+ @log.info( "Uploading ...", Log::LV_USER)
- # get package path list
- binpkg_path_list = Dir.glob("#{@source_path}/*_*_#{@os}.zip")
+ # get package path list
+ binpkg_path_list = Dir.glob("#{@source_path}/*_*_#{@os}.zip")
- # upload
- u_client = Client.new( @pkgsvr_url, nil, @log )
- snapshot = u_client.upload( @pkgsvr_ip, @pkgsvr_port, binpkg_path_list, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd, @pkgsvr_password)
+ # upload
+ u_client = Client.new( @pkgsvr_url, nil, @log )
+ snapshot = u_client.upload( @pkgsvr_ip, @pkgsvr_port, binpkg_path_list, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd, @pkgsvr_password)
- if snapshot.nil? then
- @log.info( "Upload failed...", Log::LV_USER)
+ if snapshot.nil? then
+ @log.info( "Upload failed...", Log::LV_USER)
+ return false
+ end
- return false
- end
+ # update local
+ @log.info( "Upload succeeded. Sync local pkg-server again...", Log::LV_USER)
+ @pkgsvr_client.update
+ @log.info("Snapshot: #{snapshot}", Log::LV_USER)
- # update local
- @log.info( "Upload succeeded. Sync local pkg-server again...", Log::LV_USER)
- @pkgsvr_client.update
- @log.info("Snapshot: #{snapshot}", Log::LV_USER)
+ ensure
+ add_timestamp("UPLOAD_END")
+ end
return true
end
@db_dsn = nil
@db_user = nil
@db_passwd = nil
- @db_version = 3
+ @db_version = 4
@sqlite3_db_mutex = Mutex.new
#DB upgrade SQL command
CONSTRAINT fk_jobs_jobs1 FOREIGN KEY ( parent_job_id ) REFERENCES jobs ( id ),
CONSTRAINT fk_jobs_sources1 FOREIGN KEY ( source_id ) REFERENCES sources ( id ),
CONSTRAINT fk_jobs_remote_build_servers1 FOREIGN KEY ( remote_build_server_id ) REFERENCES remote_build_servers ( id ) )#{post_fix}"
+ db.do "CREATE TABLE job_timestamps (
+ id INTEGER PRIMARY KEY #{inc},
+ job_id INTEGER,
+ stamp_name VARCHAR(64),
+ stamp_time DATETIME)#{post_fix}"
end
end
+ public
+ def add_timestamp(name)
+ if not @server.has_db? then return end
+
+ now = @server.db_now()
+ @server.get_db_connection() do |db|
+ db.do "INSERT INTO job_timestamps(job_id,stamp_name,stamp_time)
+ VALUES (#{@id},'#{name}',#{now})"
+ end
+ end
+
+
def kill_sub_process()
if @sub_pid != 0 then
if not @log.nil? then
job.status = "INITIALIZING"
job.thread = Thread.new do
save_job_status(job)
+ job.add_timestamp("INIT_START")
begin
# init
if not job.init or job.status == "ERROR" then
if job.status == "INITIALIZING" then
job.status = "WAITING"
save_job_status(job)
+ job.add_timestamp("INIT_END")
end
@server.log.info "Checking the job \"#{job.id}\" was finished!"
rescue BuildServerException => e
def execute(job)
job.status = "WORKING"
save_job_status(job)
+ job.add_timestamp("WORK_START")
# start build
job.execute
# status change & job control
job.status = "REMOTE_WORKING"
save_job_status(job)
+ job.add_timestamp("WORK_START")
@server.log.info "Moved the job \"#{job.id}\" to remote job list"
else
@server.log.info "Moving the job \"#{job.id}\" to remote failed"
# send local packages if build is invoked from JOB
if not @job.nil? and not options[:local_pkgs].empty? then
begin
+ @job.add_timestamp("REMOTE_UPLOAD_START")
@job.get_remote_server().add_file_transfer()
options[:local_pkgs].each do |pkg_path|
@log.info( "Sending file... : #{pkg_path}", Log::LV_USER )
end
ensure
@job.get_remote_server().remove_file_transfer()
+ @job.add_timestamp("REMOTE_UPLOAD_END")
end
end
# receive binary package if not reverse build
if options[:save] then
+ @job.add_timestamp("REMOTE_DOWNLOAD_START") if not @job.nil?
result_files.each do |file_name|
@log.info( "Receiving file from remote server : #{file_name}", Log::LV_USER )
if Utils.is_unix_like_os(Utils::HOST_OS) then
return false
end
end
+ @job.add_timestamp("REMOTE_DOWNLOAD_END") if not @job.nil?
end
return true