Example #1
0
 public sealed override void Build(Build build, Environment env, CancellationToken taskCancelToken, FailedBuildTokenSource failedBuildTokenSource, LoggerList loggers)
 {
     foreach (BuildStep step in BuildSteps)
     {
         step.Apply(env, failedBuildTokenSource, loggers);
         CheckIfBuildCanceled(taskCancelToken, build, loggers.GetLogger <JobBuildLogger.JobBuildLogger>());
         failedBuildTokenSource.Token.ThrowIfFailed();
     }
 }
Example #2
0
        public sealed override void Apply(Environment env, Parameter[] parameters, FailedBuildTokenSource failedBuildTokenSource, LoggerList loggers)
        {
            string command = parameters.Single(o => o.Name == "command").Value;

            ProcessStartInfo processInfo = new ProcessStartInfo("cmd.exe", "/c " + command);

            string directory = Path.Combine(System.Environment.CurrentDirectory, "jobs", env.Properties["jobName"]);

            JobBuildLogger.JobBuildLogger buildLogger = loggers.GetLogger <JobBuildLogger.JobBuildLogger>();

            buildLogger.Log(new Log("[windows-batch] : " + command));

            Process process = new Process();

            process.StartInfo.WorkingDirectory       = directory;
            process.StartInfo.UseShellExecute        = false;
            process.StartInfo.RedirectStandardOutput = true;
            process.StartInfo.RedirectStandardError  = true;
            process.OutputDataReceived += (sender, args) => buildLogger.Log(new Log(args.Data));
            process.ErrorDataReceived  += (sender, args) => buildLogger.Log(new Log(args.Data));

            foreach (KeyValuePair <string, string> prop in env.Properties)
            {
                process.StartInfo.Environment.Add(prop.Key.ToUpper(), prop.Value);
            }

            Node node = new Node()
            {
                WorkSpace = "C:",
                IpAddress = "machine"
            };

            node.Execute(process, command);

            process.BeginErrorReadLine();
            process.BeginOutputReadLine();

            process.WaitForExit();

            if (process.ExitCode != 0)
            {
                failedBuildTokenSource.Failed();
            }
        }