private static async Task Start(Options options) { _logger.Information("Starting LightHouse with the following properties:"); _logger.Information($"Service: {options.Service}"); _logger.Information($"Refresh interval: {options.RefreshInterval}"); _logger.Information($"Brightness: {options.Brightness}"); _logger.Information("Start sequence..."); _signalLightController.Test(); _logger.Information("Starting to watch build status..."); var buildProviderSettings = new BuildProviderSettings { AccessToken = options.Token, Collection = options.Collection, Instance = options.Instance, ExcludedBuildDefinitionIds = options.ExcludeBuildDedfinitionIds.ToList(), TeamProjects = options.TeamProjects.ToList() }; await _buildsWatcher.Watch( buildService : options.Service, buildProviderSettings : buildProviderSettings, refreshInterval : options.RefreshInterval, onRefreshAction : buildsStatus => ProcessBuildsStatus(buildsStatus, options.Brightness, options.EnableFlashing)); }
private async Task Start() { _logger.Information("Starting LightHouse with the following properties:"); _logger.Information($"Service: {LighthouseSettings.Service}"); _logger.Information($"Refresh interval: {LighthouseSettings.RefreshInterval}"); _logger.Information($"Brightness: {LighthouseSettings.Brightness}"); _logger.Information($"Flashing enabled: {LighthouseSettings.EnableFlashing}"); _logger.Information("Start sequence..."); _signalLightController.Test(); _logger.Information("Starting to watch build status..."); var teamProjects = LighthouseSettings.Projects .Split(',') .Select(p => p.TrimStart().TrimEnd()) .ToList(); var excludedBuildDefinitionIds = LighthouseSettings.ExcludeBuildDefinitionIds != null ? LighthouseSettings .ExcludeBuildDefinitionIds .Replace(" ", "") .Split(',') .Select(p => p.TrimStart().TrimEnd()) .Select(long.Parse) .ToList() : new List <long>(); var buildProviderSettings = new BuildProviderSettings { AccessToken = LighthouseSettings.Token, Collection = LighthouseSettings.Collection, Instance = LighthouseSettings.Instance, ExcludedBuildDefinitionIds = CreateExcludedBuildDefinitionIds(), TeamProjects = CreateTeamProjects() }; await _buildsWatcher.Watch( buildService : LighthouseSettings.Service, buildProviderSettings : buildProviderSettings, refreshInterval : LighthouseSettings.RefreshInterval, onRefreshAction : ProcessBuildsStatus); }
public async Task <List <Lib.Build> > GetWithStatus(BuildStatus statusFilter, BuildProviderSettings buildProviderSettings) { try { var excludedBuildDefinitionIds = buildProviderSettings.ExcludedBuildDefinitionIds ?? new List <long>(); var urls = _urlBuilder.Build(buildProviderSettings.Instance, buildProviderSettings.Collection, buildProviderSettings.TeamProjects); var responses = new List <BuildDefinitionsResponse>(); foreach (var vstsUrl in urls) { var request = vstsUrl .WithBasicAuth(buildProviderSettings.AccessToken, string.Empty) .AppendPathSegment("build") .AppendPathSegment("builds") .SetQueryParam("statusFilter", statusFilter.ToString()) .SetQueryParam("maxBuildsPerDefinition", 1) .SetQueryParam("queryOrder", "finishTimeDescending"); _logger.Information($"Getting build definitions from url {request.Url}"); var response = await request.GetJsonAsync <BuildDefinitionsResponse>(); responses.Add(response); } return(responses .SelectMany(response => response .Builds .Where(bd => !excludedBuildDefinitionIds.Contains(bd.BuildDefinition.Id)) .Select(_mapper.Map <Build, Lib.Build>)) .ToList()); } catch (FlurlHttpTimeoutException) { // FlurlHttpTimeoutException derives from FlurlHttpException; catch here only // if you want to handle timeouts as a special case _logger.Error("Request timed out."); } catch (FlurlHttpException ex) { // ex.Message contains rich details, inclulding the URL, verb, response status, // and request and response bodies (if available) _logger.Error($"Calling {ex.Call.FlurlRequest.Url} returned the following error:"); _logger.Error(ex.Message); _logger.Error($"Status code: {ex.Call.HttpStatus.ToString()}"); _logger.Error($"Request Body: {ex.Call.RequestBody}"); _logger.Error($"Response Body: {await ex.GetResponseStringAsync()}"); } return(new List <Lib.Build>()); }
public Task <List <Lib.Build> > GetWithStatus(BuildService buildService, BuildStatus statusFilter, BuildProviderSettings buildProviderSettings) { switch (buildService) { case BuildService.Tfs: return(_tfsClient.GetWithStatus(statusFilter, buildProviderSettings)); case BuildService.DevOps: return(_devOpsClient.GetWithStatus(statusFilter, buildProviderSettings)); default: throw new Exception($"Build service {buildService} not implemented!"); } }