Exemple #1
0
        /// <summary>
        /// Adds a new build to the scheduler.
        /// </summary>
        public void AddBuild(Build build)
        {
            builds.Add(build);

            if (BuildAdded != null)
                BuildAdded(build);
        }
Exemple #2
0
        /// <summary>
        /// Removes an existing build from the scheduler.
        /// </summary>
        public void RemoveBuild(Build build)
        {
            builds.Remove(build);

            if (BuildRemoved != null)
                BuildRemoved(build);
        }
Exemple #3
0
        protected BuildStep(BuildExecutor executor, Build build)
        {
            if (executor == null)
                throw new ArgumentNullException("executor");

            if (build == null)
                throw new ArgumentNullException("build");

            BuildExecutor = executor;
            Build = build;
        }
Exemple #4
0
        public void AddBuild(Build build)
        {
            var obj = new DBBuild
            {
                Revision = build.Commit.Revision,
                State = build.State
            };

            Sqlite.Insert(obj);

            build.Id = obj.Id;
        }
Exemple #5
0
        /// <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();
            }
        }
Exemple #6
0
        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);
            }
        }
Exemple #7
0
        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;
        }
Exemple #8
0
 public GitBuildStep(BuildExecutor executor, Build build)
     : base(executor, build)
 {
 }
Exemple #9
0
 public LuaBuildStep(BuildExecutor executor, Build build)
     : base(executor, build)
 {
     luaRuntime = new LuaRuntime();
     Outputs = new List<CommandOutput>();
 }
Exemple #10
0
 public void SendBuild(Build build)
 {
 }
Exemple #11
0
 private void BuildRemoved(Build build)
 {
     Log.Message("Build removed from queue: {0}", build);
 }
Exemple #12
0
 private void BuildAdded(Build build)
 {
     Log.Message("Build added to queue: {0}", build);
 }
Exemple #13
0
        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;
        }
Exemple #14
0
        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;
        }
Exemple #15
0
 /// <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();
     }
 }