class Event::Build < Event::Package
self.description = 'Package has finished building'
self.abstract_class = true
- payload_keys :repository, :arch, :release, :readytime, :srcmd5, :build_result_dir,
+ payload_keys :repository, :arch, :release, :readytime, :srcmd5,
:rev, :reason, :bcnt, :verifymd5, :hostarch, :starttime, :endtime, :workerid, :versrel,
- :previouslyfailed, :file, :job, :reposerver, :srcserver
+ :previouslyfailed, :file, :job, :reposerver, :srcserver,
+ :pre_install_time, :install_time, :main_build_time
def my_message_id
# we put the verifymd5 sum in the message id, so new checkins get new thread, but it doesn't have to be very correct
use POSIX qw(strftime);
use Time::HiRes qw( clock_gettime CLOCK_REALTIME);
use URI::Escape;
+use BSRPC;
+use MIME::Base64;
+use JSON::XS;
my $bsdir = $BSConfig::bsdir || "/srv/obs";
my $reporoot = "$bsdir/build";
my %build_project_id_cache;
#-------------------------------------------------------------------------------
+sub trigger_make_dep_graph {
+ my ($build_project_id, $proj_name, $repo, $arch) = @_;
+
+ # trigger making build_progress graph.
+ my $jenkinsuri = "$BSConfig::jenkinsserver/job/make_dep_graph/buildWithParameters";
+ my $param = {
+ 'request' => 'POST',
+ 'uri' => $jenkinsuri,
+ 'timeout' => 60,
+ 'maxredirects' => 1,
+ };
+ my $args = {
+ 'action' => 'build_progress',
+ 'build_project_id'=>$build_project_id,
+ 'obs_project' => $proj_name,
+ 'repo' => $repo,
+ 'arch' => $arch,
+ };
+ my @para = ("TRIGGER_INFO=".encode_base64(encode_json($args), ''));
+ print "notify: trigger Jenkins uri=[$jenkinsuri] para=[@para]\n";
+ eval {
+ BSRPC::rpc( $param, undef, @para );
+ };
+ warn("Jenkins: $@") if $@;
+}
+
sub parse_reason {
my ($tt) = @_;
if( $build_target_id ) {
print "trigger_make_dep_graph...\n";
- notify_buildmonitor::trigger_make_dep_graph($build_project_id, $proj_name, $repo, $arch);
+ trigger_make_dep_graph($build_project_id, $proj_name, $repo, $arch);
}
}
#-------------------------------------------------------------------------------
}
#-------------------------------------------------------------------------------
sub package_build_finished {
- my ($config, $projid, $repo, $arch, $package_name, $status, $build_result_dir) = @_;
+ my ($config, $projid, $repo, $arch, $package_name, $status, $pre_install_time, $install_time, $main_build_time) = @_;
return unless $g_dbh;
my $start_time = get_cur_time();
my $build_project_id = get_build_project_id($config, $projid);
- my $pre_install_time;
- my $install_time;
- my $main_build_time;
-
my $detail = "";
if( $status eq 'unchanged' ) {
$pre_install_time = 0;
$install_time = 0;
} else {
- if ( $status eq "succeeded" ) {
- my $statistics_file = "$build_result_dir/_statistics";
- ($pre_install_time, $install_time, $main_build_time) = parse_statistics($projid, $repo, $arch, $package_name, $statistics_file);
- }
#home:prerelease:Tizen:Mobile:submit:tizen:20161101.025248
#$build_log_url=copy_build_log($projid, $repo, $arch, $package_name, "$build_result_dir/logfile", $status);
$build_log_url=get_rawlog_url($projid, $repo, $arch, $package_name);
my $elapsed_time = get_cur_time() - $start_time;
print "[",__LINE__,"] took $elapsed_time seconds.\n";
-
}
#-------------------------------------------------------------------------------
sub parse_statistics {
- my ($projid, $repo, $myarch, $packid, $filename) = @_;
+ my ($filename) = @_;
if ( ! defined $filename ) {
return undef;