Esempio n. 1
0
            public RunnableJob(IPipelineRunManager pipelineRunManager, BuildJob job, IDictionary <BuildJob, IJobStatus> jobMap)
            {
                BuildTask = job.Task;
                Status    = new JobStatus(pipelineRunManager.BuildPath(job), job);

                var inputHandlers = new List <(BuildInputHandler handler, string path)>();

                foreach (var input in job.Input)
                {
                    var handler = input.Source switch {
                        GitBuildInput git => HandleGitInput(pipelineRunManager, git),
                        HttpRequestBuildInput http => HandleHttpInput(pipelineRunManager, http),
                        ArtifactBuildInput artifact => HandleArtifactInput(artifact, jobMap[artifact.Job]),
                        _ => throw new Exception("Unknown build input type")
                    };

                    inputHandlers.Add((handler, input.Path));
                }
                this.inputHandlers = inputHandlers;
            }
Esempio n. 2
0
            private static BuildInputHandler HandleGitInput(IPipelineRunManager pipelineRunManager, GitBuildInput git) => async cancellationToken => {
                var dir = pipelineRunManager.NextInputPath();

                Directory.CreateDirectory(dir);

                await GitUtil.CloneRepo(git.Url, dir, git.Branch);

                return(dir);
            };