Beispiel #1
0
        public async IAsyncEnumerable <LightOption> ScanAsync(CancellationToken cancellationToken)
        {
            foreach (var query in Options.Jira.Queries)
            {
                var issues = await m_JiraClient.GetIssuesAsync(
                    Options.Jira.BaseUrl,
                    Options.Jira.Username,
                    Options.Jira.Token,
                    query.BoardId, query.Query,
                    cancellationToken);

                if (!issues.Any())
                {
                    continue;
                }

                if (query.AlertLight != null)
                {
                    yield return(query.AlertLight);
                }
            }

            foreach (var project in Options.TeamCity.Projects)
            {
                var include = project.IncludeBuildConfigIds?
                              .Split(',', StringSplitOptions.RemoveEmptyEntries)
                              .Select(value => value.Trim())
                              .ToArray();

                var exclude = project.ExcludeBuildConfigIds?
                              .Split(',', StringSplitOptions.RemoveEmptyEntries)
                              .Select(value => value.Trim())
                              .ToArray();

                var builds = await m_TeamCityClient.GetBuildsAsync(
                    Options.TeamCity.BaseUrl,
                    Options.TeamCity.Token,
                    project.Id, include, exclude, project.IsRecursive,
                    cancellationToken);

                var failingBuilds = builds.Where(build => !"SUCCESS".Equals(build.Status, StringComparison.InvariantCultureIgnoreCase));
                if (!failingBuilds.Any())
                {
                    continue;
                }

                if (project.AlertLight != null)
                {
                    yield return(project.AlertLight);
                }
            }
        }