public TimerRecordBuilder(ISourceControlInfo sourceControlInfo, BuildCounter buildCounter) { _sourceControlInfo = sourceControlInfo; _buildCounter = buildCounter; }
public static void PublishTotalBuildRecord(DateTime startTime, DateTime endTime, string buildNumber) { var buildCounter = new BuildCounter(); var builder = new TimerRecordBuilder(new SourceControlInfo(), buildCounter); var record = builder .WithProjectName("Total_Build_Time") .WithStartTime(startTime) .WithFinishTime(endTime) .WithMachineName() .WithUserName() .WithTrunkPath() .WithLocalBuildNumber(buildNumber) .Build(); //Increment build count here... buildCounter.IncrementFile(); //TODO validate elsewhere if ((Settings.TotalBuildTimeValidMin != null && record.ElapsedTime < Settings.TotalBuildTimeValidMin) || (Settings.TotalBuildTimeValidMax != null && record.ElapsedTime > Settings.TotalBuildTimeValidMax)) return; var recordJson = JsonConvert.SerializeObject(record); _logSender.Value.SendString(recordJson); }
private static void StartWatching() { //TODO For this to work, CheckForWatcher() needs to be the very first thing called TotalBuildTimer.UpdateBuildStart(); //Error possiblities var nullCount = 0; var absoluteQuittingTime = DateTime.Now.AddMinutes(10); var finishedTimeout = Settings.TotalBuildTimeTimeout; while (true) { Logger.Info("Checking for non-updated last build time..."); var lastEnd = TotalBuildTimer.GetLastBuildEnd(); if (lastEnd.HasValue) { if (lastEnd.Value < (DateTime.Now.Subtract(finishedTimeout))) { //Consider build end var counter = new BuildCounter(); var buildNumber = counter.GetIncrementingBuildVersion(false, false); Logger.DisplayMessage("Submitting!:" + lastEnd.Value); TotalBuildTimer.SubmitBuildLength(buildNumber); return; } } else { ++nullCount; } if (DateTime.Now > absoluteQuittingTime || nullCount >= 5) { //Consider this some error return; } Thread.Sleep(TimeSpan.FromSeconds(15)); } }