build_package.pl
changeset 50 e8b76d25d90c
parent 49 07eb981b2b45
child 51 5db037fb1000
equal deleted inserted replaced
49:07eb981b2b45 50:e8b76d25d90c
    20 
    20 
    21 my $sBOOTSTRAP_DIR="C:\\Apps\\FBF\\bootstrap";
    21 my $sBOOTSTRAP_DIR="C:\\Apps\\FBF\\bootstrap";
    22 my $sJOB_BASE_DIR="fbf_project";
    22 my $sJOB_BASE_DIR="fbf_project";
    23 my $nMAX_JOBDIR_AGE_SECONDS = 86400; # max number of seconds after which the letter is forcibly released
    23 my $nMAX_JOBDIR_AGE_SECONDS = 86400; # max number of seconds after which the letter is forcibly released
    24 my $nLOCK_FILE_MAX_ATTEMPTS = 5;
    24 my $nLOCK_FILE_MAX_ATTEMPTS = 5;
    25 my $sREMOTE_LOG_ARCHIVE="\\\\bishare\\SF_builds";
       
    26 my $sNUMBERS_FILE="\\\\bishare\\SF_builds\\numbers2.txt";
    25 my $sNUMBERS_FILE="\\\\bishare\\SF_builds\\numbers2.txt";
    27 my $sLETTERS_FILE="letters.txt";
    26 my $sLETTERS_FILE="letters.txt";
    28 my $nMAX_LETTER_AGE_SECONDS = 86400; # max number of seconds after which the letter is forcibly released
    27 my $nMAX_LETTER_AGE_SECONDS = 86400; # max number of seconds after which the letter is forcibly released
    29 
    28 
    30 my $sFbfProjectRepo = "\\\\bishare\\mercurial_development\\oss\\FCL\\interim\\fbf\\projects\\packages";
    29 my $sFbfProjectRepo = "\\\\bishare\\mercurial_development\\oss\\FCL\\interim\\fbf\\projects\\packages";
   177 my $sProjectArg = "-Dsf.project.repo=$sFbfProjectRepo";
   176 my $sProjectArg = "-Dsf.project.repo=$sFbfProjectRepo";
   178 $sProjectArg .= " -Dsf.project.rev=$sFbfProjectRev" if ($sFbfProjectRev);
   177 $sProjectArg .= " -Dsf.project.rev=$sFbfProjectRev" if ($sFbfProjectRev);
   179 $sProjectArg = "-Dsf.project.dir=$sFbfProjectDir" if ($sFbfProjectDir);
   178 $sProjectArg = "-Dsf.project.dir=$sFbfProjectDir" if ($sFbfProjectDir);
   180 my $sBootstrapCmd = "hlm -f bootstrap.xml $sConfigArg $sProjectArg -Dsf.target.dir=$sJobDir";
   179 my $sBootstrapCmd = "hlm -f bootstrap.xml $sConfigArg $sProjectArg -Dsf.target.dir=$sJobDir";
   181 print("$sBootstrapCmd\n");
   180 print("$sBootstrapCmd\n");
   182 open(LOG, ">console_bootstrap_$$.txt");
   181 system($sBootstrapCmd);
   183 open(PIPE, "$sBootstrapCmd 2>&1 |");
       
   184 while(<PIPE>)
       
   185 {
       
   186 	print LOG $_;
       
   187 	print $_;
       
   188 }
       
   189 close(PIPE);
       
   190 close(LOG);
       
   191 
   182 
   192 # check that $sNUMBERS_FILE exists, otherwise create it
   183 # check that $sNUMBERS_FILE exists, otherwise create it
   193 if (!-f $sNUMBERS_FILE)
   184 if (!-f $sNUMBERS_FILE)
   194 {
   185 {
   195 	open FILE, ">$sNUMBERS_FILE";
   186 	open FILE, ">$sNUMBERS_FILE";
   248 print("cd $sJobDir\\sf-config\n");
   239 print("cd $sJobDir\\sf-config\n");
   249 chdir("$sJobDir\\sf-config");
   240 chdir("$sJobDir\\sf-config");
   250 print "###### BUILD PREPARATION ######\n";
   241 print "###### BUILD PREPARATION ######\n";
   251 my $sPreparationCmd = "hlm sf-prep -Dsf.project.type=package $sSubProjArg -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTestBuildOpt $sNoPublishOpt $sJobRootDirArg $sHlmDefineOpt";
   242 my $sPreparationCmd = "hlm sf-prep -Dsf.project.type=package $sSubProjArg -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTestBuildOpt $sNoPublishOpt $sJobRootDirArg $sHlmDefineOpt";
   252 print("$sPreparationCmd\n");
   243 print("$sPreparationCmd\n");
   253 open(LOG, ">console_sfprep_$$.txt");
   244 system($sPreparationCmd);
   254 open(PIPE, "$sPreparationCmd 2>&1 |");
       
   255 while(<PIPE>)
       
   256 {
       
   257 	print LOG $_;
       
   258 	print $_;
       
   259 }
       
   260 close(PIPE);
       
   261 close(LOG);
       
   262 
   245 
   263 print "###### EXECUTE BUILD ######\n";
   246 print "###### EXECUTE BUILD ######\n";
   264 my $sBuildallCmd = "hlm sf-build-all -Dsf.project.type=package $sSubProjArg -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTestBuildOpt $sNoPublishOpt $sJobRootDirArg $sHlmDefineOpt";
   247 my $sBuildallCmd = "hlm sf-build-all -Dsf.project.type=package $sSubProjArg -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTestBuildOpt $sNoPublishOpt $sJobRootDirArg $sHlmDefineOpt";
   265 print("$sBuildallCmd\n");
   248 print("$sBuildallCmd\n");
   266 open(LOG, ">console_sfbuildall_$$.txt");
   249 system($sBuildallCmd);
   267 open(PIPE, "$sBuildallCmd 2>&1 |");
       
   268 while(<PIPE>)
       
   269 {
       
   270 	print LOG $_;
       
   271 	print $_;
       
   272 }
       
   273 close(PIPE);
       
   274 close(LOG);
       
   275 
       
   276 print "###### GENERATE BUILD SUMMARY ######\n";
       
   277 my $sSummaryCmd = "hlm sf-summary -Dsf.project.type=package $sSubProjArg -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTestBuildOpt $sNoPublishOpt $sJobRootDirArg $sHlmDefineOpt";
       
   278 print("$sSummaryCmd\n");
       
   279 open(LOG, ">console_sfsummary_$$.txt");
       
   280 open(PIPE, "$sSummaryCmd 2>&1 |");
       
   281 while(<PIPE>)
       
   282 {
       
   283 	print LOG $_;
       
   284 	print $_;
       
   285 }
       
   286 close(PIPE);
       
   287 close(LOG);
       
   288 
       
   289 if ($bPublish)
       
   290 {
       
   291 	# copy console outputs to remote log archive
       
   292 	if (-d "$sREMOTE_LOG_ARCHIVE\\$sPackage\\builds\\$sPlatform\\$sPackage\_$sPlatform.$nJobNumber\\logs")
       
   293 	{
       
   294 		my $sTgtDir = "$sREMOTE_LOG_ARCHIVE\\$sPackage\\builds\\$sPlatform\\$sPackage\_$sPlatform.$nJobNumber\\logs\\console";
       
   295 		print "copying console output files to $sTgtDir\n";
       
   296 		system("mkdir $sTgtDir");
       
   297 		system("copy /Y $sBOOTSTRAP_DIR\\console_bootstrap_$$.txt $sTgtDir");
       
   298 		system("del $sBOOTSTRAP_DIR\\console_bootstrap_$$.txt");
       
   299 		system("copy $sJobDir\\sf-config\\console_sfprep_$$.txt $sTgtDir");
       
   300 		system("copy $sJobDir\\sf-config\\console_sfbuildall_$$.txt $sTgtDir");
       
   301 		system("copy $sJobDir\\sf-config\\console_sfsummary_$$.txt $sTgtDir");
       
   302 	}
       
   303 	else
       
   304 	{
       
   305 		print "directory $sREMOTE_LOG_ARCHIVE\\$sPackage\\builds\\$sPlatform\\$sPackage\_$sPlatform.$nJobNumber\\logs doesn't exist.\n";
       
   306 	}
       
   307 }
       
   308 
   250 
   309 print("cd $sBOOTSTRAP_DIR\n");
   251 print("cd $sBOOTSTRAP_DIR\n");
   310 chdir("$sBOOTSTRAP_DIR");
   252 chdir("$sBOOTSTRAP_DIR");
   311 
   253 
   312 # release the drive letter
   254 # release the drive letter