// Upload from target path to VSTS BlobStore service through BuildDropManager, then associate it with the build internal async Task UploadAsync( AgentTaskPluginExecutionContext context, Guid projectId, int buildId, string name, string source, CancellationToken cancellationToken) { VssConnection connection = context.VssConnection; // 1) upload pipeline artifact to VSTS BlobStore var httpclient = connection.GetClient <DedupStoreHttpClient>(); var tracer = new CallbackAppTraceSource(str => context.Output(str), System.Diagnostics.SourceLevels.Information); httpclient.SetTracer(tracer); var client = new DedupStoreClientWithDataport(httpclient, 16 * Environment.ProcessorCount); var BuildDropManager = new BuildDropManager(client, tracer); var result = await BuildDropManager.PublishAsync(source, cancellationToken); // 2) associate the pipeline artifact with an build artifact BuildServer buildHelper = new BuildServer(connection); Dictionary <string, string> propertiesDictionary = new Dictionary <string, string>(); propertiesDictionary.Add(RootId, result.RootId.ValueString); propertiesDictionary.Add(ProofNodes, StringUtil.ConvertToJson(result.ProofNodes.ToArray())); var artifact = await buildHelper.AssociateArtifact(projectId, buildId, name, ArtifactResourceTypes.PipelineArtifact, result.ManifestId.ValueString, propertiesDictionary, cancellationToken); context.Output(StringUtil.Loc("AssociateArtifactWithBuild", artifact.Id, buildId)); }
// Upload from target path to Azure DevOps BlobStore service through DedupManifestArtifactClient, then associate it with the build internal async Task UploadAsync( AgentTaskPluginExecutionContext context, Guid projectId, int pipelineId, string name, string source, CancellationToken cancellationToken) { VssConnection connection = context.VssConnection; BlobStoreClientTelemetry clientTelemetry; DedupManifestArtifactClient dedupManifestClient = DedupManifestArtifactClientFactory.CreateDedupManifestClient(context, connection, cancellationToken, out clientTelemetry); using (clientTelemetry) { //Upload the pipeline artifact. PipelineArtifactActionRecord uploadRecord = clientTelemetry.CreateRecord <PipelineArtifactActionRecord>((level, uri, type) => new PipelineArtifactActionRecord(level, uri, type, nameof(UploadAsync), context)); PublishResult result = await clientTelemetry.MeasureActionAsync( record : uploadRecord, actionAsync : async() => { return(await dedupManifestClient.PublishAsync(source, cancellationToken)); } ); // Send results to CustomerIntelligence context.PublishTelemetry(area: PipelineArtifactConstants.AzurePipelinesAgent, feature: PipelineArtifactConstants.PipelineArtifact, record: uploadRecord); // 2) associate the pipeline artifact with an build artifact BuildServer buildHelper = new BuildServer(connection); Dictionary <string, string> propertiesDictionary = new Dictionary <string, string>(); propertiesDictionary.Add(PipelineArtifactConstants.RootId, result.RootId.ValueString); propertiesDictionary.Add(PipelineArtifactConstants.ProofNodes, StringUtil.ConvertToJson(result.ProofNodes.ToArray())); propertiesDictionary.Add(PipelineArtifactConstants.ArtifactSize, result.ContentSize.ToString()); var artifact = await buildHelper.AssociateArtifact(projectId, pipelineId, name, ArtifactResourceTypes.PipelineArtifact, result.ManifestId.ValueString, propertiesDictionary, cancellationToken); context.Output(StringUtil.Loc("AssociateArtifactWithBuild", artifact.Id, pipelineId)); } }
// Upload from target path to VSTS BlobStore service through BuildDropManager, then associate it with the build internal async Task UploadAsync( AgentTaskPluginExecutionContext context, Guid projectId, int buildId, string name, string source, CancellationToken cancellationToken) { VssConnection connection = context.VssConnection; var buildDropManager = this.CreateBulidDropManager(context, connection); //Upload the pipeline artifact. var result = await buildDropManager.PublishAsync(source, cancellationToken); // 2) associate the pipeline artifact with an build artifact BuildServer buildHelper = new BuildServer(connection); Dictionary <string, string> propertiesDictionary = new Dictionary <string, string>(); propertiesDictionary.Add(RootId, result.RootId.ValueString); propertiesDictionary.Add(ProofNodes, StringUtil.ConvertToJson(result.ProofNodes.ToArray())); var artifact = await buildHelper.AssociateArtifact(projectId, buildId, name, ArtifactResourceTypes.PipelineArtifact, result.ManifestId.ValueString, propertiesDictionary, cancellationToken); context.Output(StringUtil.Loc("AssociateArtifactWithBuild", artifact.Id, buildId)); }