Ejemplo n.º 1
0
        private async Task ReadArtifact(IAsyncStreamReader <BuildStatusUpdate> requestStream, IServerStreamWriter <RunBuildCommand> responseStream, IJobStatusUpdatable jobStatus, ArtifactInfo artifact, CancellationToken cancellationToken)
        {
            var artifactName = artifact.Name;

            if (artifactName == null || !PathUtil.IsValidSubPath(artifactName) || string.IsNullOrEmpty(artifactName))
            {
                throw new Exception("Invalid path name.");
            }

            await responseStream.WriteAsync(new RunBuildCommand {
                Artifact = new ArtifactRequest {
                    Artifact = artifact,
                },
            });

            var path = Path.Combine(jobStatus.ArtifactDir, artifactName);

            Directory.CreateDirectory(Path.GetDirectoryName(path));
            await using var fileStream = File.Create(path);
            await ReadArtifactContent(requestStream, fileStream, cancellationToken);
        }
Ejemplo n.º 2
0
        private async Task ReadReplay(IAsyncStreamReader <BuildStatusUpdate> requestStream, IServerStreamWriter <RunBuildCommand> responseStream, IJobStatusUpdatable jobStatus, CancellationToken cancellationToken)
        {
            await responseStream.WriteAsync(new RunBuildCommand {
                Artifact = new ArtifactRequest {
                    Replay = new Empty(),
                },
            });

            await using var fileStream = jobStatus.OpenReplay();
            await ReadArtifactContent(requestStream, fileStream, cancellationToken);
        }