public async Task PublishCodeCoverageFilesAsync(IAsyncCommandContext context, Guid projectId, long containerId, List <Tuple <string, string> > files, bool browsable, CancellationToken cancellationToken) { var publishCCTasks = files.Select(async file => { var browsableProperty = (browsable) ? bool.TrueString : bool.FalseString; var artifactProperties = new Dictionary <string, string> { { ArtifactUploadEventProperties.ContainerFolder, file.Item2 }, { ArtifactUploadEventProperties.ArtifactName, file.Item2 }, { ArtifactAssociateEventProperties.ArtifactType, ArtifactResourceTypes.Container }, { ArtifactAssociateEventProperties.Browsable, browsableProperty }, }; FileContainerServer fileContainerHelper = new FileContainerServer(_connection, projectId, containerId, file.Item2); await fileContainerHelper.CopyToContainerAsync(context, file.Item1, cancellationToken); string fileContainerFullPath = StringUtil.Format($"#/{containerId}/{file.Item2}"); Build.BuildServer buildHelper = new Build.BuildServer(_connection, projectId); var artifact = await buildHelper.AssociateArtifact(_buildId, file.Item2, ArtifactResourceTypes.Container, fileContainerFullPath, artifactProperties, cancellationToken); context.Output(StringUtil.Loc("PublishedCodeCoverageArtifact", file.Item1, file.Item2)); }); await Task.WhenAll(publishCCTasks); }
public async Task PublishCodeCoverageFilesAsync(IAsyncCommandContext context, Guid projectId, long containerId, List<Tuple<string, string>> files, bool browsable, CancellationToken cancellationToken) { var publishCCTasks = files.Select(async file => { var browsableProperty = (browsable) ? bool.TrueString : bool.FalseString; var artifactProperties = new Dictionary<string, string> { { ArtifactUploadEventProperties.ContainerFolder, file.Item2}, { ArtifactUploadEventProperties.ArtifactName, file.Item2 }, { ArtifactAssociateEventProperties.ArtifactType, WellKnownArtifactResourceTypes.Container }, { ArtifactAssociateEventProperties.Browsable, browsableProperty }, }; FileContainerServer fileContainerHelper = new FileContainerServer(_connection.Uri, _connection.Credentials, projectId, containerId, file.Item2); await fileContainerHelper.CopyToContainerAsync(context, file.Item1, cancellationToken); string fileContainerFullPath = StringUtil.Format($"#/{containerId}/{file.Item2}"); Build.BuildServer buildHelper = new Build.BuildServer(_connection.Uri, _connection.Credentials, projectId); var artifact = await buildHelper.AssociateArtifact(_buildId, file.Item2, WellKnownArtifactResourceTypes.Container, fileContainerFullPath, artifactProperties, cancellationToken); context.Output(StringUtil.Loc("PublishedCodeCoverageArtifact", file.Item1, file.Item2)); }); await Task.WhenAll(publishCCTasks); }