Example #1
0
            public async Task <IPipelineStatus> StartBuild(PipelineInfo pipeline)
            {
                using (await projectLock.LockAsync()) {
                    var buildsDir       = Path.Combine(ProjectDir, "builds");
                    int lastBuildNumber = BuildNumbers().DefaultIfEmpty(0).Max();

                    int buildNum = lastBuildNumber + 1;

                    var buildDir = Path.Combine(buildsDir, "build" + buildNum);
                    Directory.CreateDirectory(buildDir);

                    var runManager = new PipelineRunManager(buildDir);

                    var status = await jobQueue.AddJobs(runManager, pipeline.BuildJobs, buildNum, CancellationToken.None);

                    statuses[buildNum] = status;
                    return(status);
                }
            }