/// <summary> /// Adds a new build to the scheduler. /// </summary> public void AddBuild(Build build) { builds.Add(build); if (BuildAdded != null) BuildAdded(build); }
/// <summary> /// Removes an existing build from the scheduler. /// </summary> public void RemoveBuild(Build build) { builds.Remove(build); if (BuildRemoved != null) BuildRemoved(build); }
protected BuildStep(BuildExecutor executor, Build build) { if (executor == null) throw new ArgumentNullException("executor"); if (build == null) throw new ArgumentNullException("build"); BuildExecutor = executor; Build = build; }
public void AddBuild(Build build) { var obj = new DBBuild { Revision = build.Commit.Revision, State = build.State }; Sqlite.Insert(obj); build.Id = obj.Id; }
/// <summary> /// Get a new build job /// </summary> private static void GetBuild() { var buildInfo = GitLabAPI.GetBuild(); if (buildInfo != null) { var conf = new BuildConfiguration(); // Create Build Job build = new Build() {Info = buildInfo}; Console.WriteLine("[" + DateTime.Now + "] Build " + buildInfo.Value.id + " started..."); var thread = new Thread(build.Start); thread.Start(); } }
void OnRepositoryChange(GithubRepository repository, List<Commit> commits) { foreach (var commit in commits) { if (commit.BuildSet != null) continue; // Spawn a set of builds for this commit. var buildSet = new BuildSet { Commit = commit }; commit.BuildSet = buildSet; Branch branch; commit.Branch.TryGetTarget(out branch); Repository repo; branch.Repository.TryGetTarget(out repo); var buildConfiguration = repo.Project.DefaultBuildConfiguration; buildConfiguration.Directory = Options.OutputDir; Log.Message("Spawning new build for {0}/{1}", repo.Project.Name, commit.ToString()); var build = new Build(repo.Project, commit, buildConfiguration); buildSet.Builds.Add(build); Database.AddBuild(build); BuildQueue.AddBuild(build); } }
RemoteBuildAgent GetCompatibleBuildAgent(Build build) { foreach (var agent in BuildAgents) { if (agent.Status != BuildAgentStatus.Idle) continue; Log.Message("Assigned build {0} to agent {1}.", build, agent); return agent; } return null; }
public GitBuildStep(BuildExecutor executor, Build build) : base(executor, build) { }
public LuaBuildStep(BuildExecutor executor, Build build) : base(executor, build) { luaRuntime = new LuaRuntime(); Outputs = new List<CommandOutput>(); }
public void SendBuild(Build build) { }
private void BuildRemoved(Build build) { Log.Message("Build removed from queue: {0}", build); }
private void BuildAdded(Build build) { Log.Message("Build added to queue: {0}", build); }
private void RunBuild(Build build) { // Change the working directory to the project. var repoPath = Path.Combine(build.Configuration.Directory, build.Project.Name); if (!Directory.Exists(repoPath)) Directory.CreateDirectory(repoPath); Directory.SetCurrentDirectory(repoPath); List<BuildStep> steps; if (MakeBuildSteps(build, out steps)) return; build.Steps = steps; foreach (var step in steps) { step.Run(); if (Log.Logger.Verbose) Log.Message(step.Output.ToString()); } var @out = build.Output; }
private bool MakeBuildSteps(Build build, out List<BuildStep> steps) { steps = new List<BuildStep> { new GitBuildStep(this, build), new LuaBuildStep(this, build) }; foreach (var step in build.Configuration.Steps) { try { steps.Add(step); } catch { Log.Error("Error running build step, aborting..."); return true; } } return false; }
/// <summary> /// Update the current running build progress /// </summary> private static void UpdateBuild() { if (build.Completed) { // Build finished if (PushBuild()) { //Console.WriteLine("[" + DateTime.Now.ToString() + "] Completed build " + build.buildInfo.id); build = null; } } else { // Build is currently running PushBuild(); } }