/// <summary> /// Discover all available versions. /// </summary> /// <param name="name">The component name</param> /// <returns>A list with all versions</returns> public IEnumerable <IComponentVersion> GetAvailableVersions(IComponentName name) { var versList = new List <IComponentVersion>(); Logger.Instance().Log(TraceLevel.Info, "{0}: Querying available component versions...", ResolverType); var teamProject = _versionControlServer.TryGetTeamProject(name.TeamProject); if (teamProject == null) { Logger.Instance().Log( TraceLevel.Info, "{0}: Could not find team project {1} on version control server for team project collection {2}", ResolverType, name.TeamProject, ResolverSettings.GetSetting(ResolverValidSettings.TeamProjectCollectionUrl)); throw new InvalidComponentException( string.Format( "Could not find team project {0} on version control server for team project collection {1}", name.TeamProject, ResolverSettings.GetSetting(ResolverValidSettings.TeamProjectCollectionUrl))); } var buildDef = (_client.GetDefinitionsAsync(project: teamProject.Name, name: name.BuildDefinition)).Result; if (buildDef == null) { Logger.Instance().Log( TraceLevel.Info, "{0}: Could not find build definition {1} for team project {2} on version control server for tfs {3}", ResolverType, name.BuildDefinition, name.TeamProject, ResolverSettings.GetSetting(ResolverValidSettings.TeamProjectCollectionUrl)); throw new InvalidComponentException( string.Format( "Could not find build definition {0} for team project {1} on version control server for tfs {2}", name.BuildDefinition, name.TeamProject, ResolverSettings.GetSetting(ResolverValidSettings.TeamProjectCollectionUrl))); } // Query all builds with this teamProject and build definition name var build = _client.GetBuildsAsync(teamProject.Name, definitions: new List <int> { buildDef.First().Id }, type: TFSWebApi.DefinitionType.Build).Result; foreach (var buildResult in build) { List <string> availableBuildTags = null; if (buildResult.Tags != null && buildResult.Tags.Count() > 0) { availableBuildTags = buildResult.Tags; } var availableBuildStatus = new List <string> { buildResult.Status.ToString() }; var vers = new ComponentVersion(buildResult.BuildNumber, availableBuildStatus, acceptedBuildQuality: null, acceptedBuildTags: availableBuildTags); versList.Add(vers); Logger.Instance().Log(TraceLevel.Info, "{0}: Found build {1}", ResolverType, vers.ToString()); } Logger.Instance().Log(TraceLevel.Info, "{0}: Querying component versions finished successfully", ResolverType); return(versList); }
/// <summary> /// Discover all available versions. /// </summary> /// <param name="name">The component name</param> /// <returns>A list with all versions</returns> public IEnumerable <IComponentVersion> GetAvailableVersions(IComponentName name) { var versList = new List <IComponentVersion>(); Logger.Instance().Log(TraceLevel.Info, "{0}: Querying available component versions...", ResolverType); var teamProject = _versionControlServer.TryGetTeamProject(name.TeamProject); if (teamProject == null) { Logger.Instance().Log( TraceLevel.Info, "{0}: Could not find team project {1} on version control server for team project collection {2}", ResolverType, name.TeamProject, ResolverSettings.GetSetting(ResolverValidSettings.TeamProjectCollectionUrl)); throw new InvalidComponentException( string.Format( "Could not find team project {0} on version control server for team project collection {1}", name.TeamProject, ResolverSettings.GetSetting(ResolverValidSettings.TeamProjectCollectionUrl))); } var buildDef = _buildServer.GetBuildDefinition(teamProject.Name, name.BuildDefinition); if (buildDef == null) { Logger.Instance().Log( TraceLevel.Info, "{0}: Could not find build definition {1} for team project {2} on version control server for tfs {3}", ResolverType, name.BuildDefinition, name.TeamProject, ResolverSettings.GetSetting(ResolverValidSettings.TeamProjectCollectionUrl)); throw new InvalidComponentException( string.Format( "Could not find build definition {0} for team project {1} on version control server for tfs {2}", name.BuildDefinition, name.TeamProject, ResolverSettings.GetSetting(ResolverValidSettings.TeamProjectCollectionUrl))); } // Query all builds with this teamProject and build definition name // BuildNumber xor (BuildQuality or BuildStatus) = version var spec = _buildServer.CreateBuildDetailSpec(buildDef); spec.InformationTypes = new string[] { }; var details = _buildServer.QueryBuilds(spec); foreach (var buildResult in details.Builds) { List <string> availableBuildQuality = null; if (buildResult.Quality != null) { availableBuildQuality = new List <string> { buildResult.Quality }; } var availableBuildStatus = new List <string> { buildResult.Status.ToString() }; var vers = new ComponentVersion(buildResult.BuildNumber, availableBuildStatus, availableBuildQuality, null); versList.Add(vers); Logger.Instance().Log(TraceLevel.Info, "{0}: Found build {1}", ResolverType, vers.ToString()); } Logger.Instance().Log(TraceLevel.Info, "{0}: Querying component versions finished successfully", ResolverType); return(versList); }