コード例 #1
0
        private async Task CreateNugetPackage(CancellationToken token)
        {
            var packageDir = Path.Combine(Context.ContentDirectory, "Jenkins.Net.Publishing", "bin", "Package");

            var args = new[] {
                "pack",
                "\"Jenkins.Net\\Jenkins.Net.csproj\"",
                "--configuration Release",
                "--no-build",
                $"--output \"{packageDir}\"",
            };

            var info = new ProcessRunInfo {
                Filename         = "dotnet",
                Arguments        = string.Join(" ", args),
                WorkingDirectory = Context.ContentDirectory,
            };

            var runner = new ProcessRunner(Context);
            var result = await runner.RunAsync(info, token);

            if (result.ExitCode != 0)
            {
                throw new ApplicationException($"Build Failed! [{result.ExitCode}]");
            }
        }
コード例 #2
0
        private async void BeginInstall(string updatePath, string msiFilename)
        {
            // TODO: Verify MSI?

            try {
                await PhotonServer.Instance.Shutdown(TimeSpan.FromSeconds(30));
            }
            catch (Exception error) {
                Log.Error("An error occurred while shutting down!", error);
            }

            Log.Debug("Starting server update...");

            try {
                var runInfo = new ProcessRunInfo {
                    Filename         = "msiexec.exe",
                    Arguments        = $"/i \"{msiFilename}\" /passive /l*vx \"log.txt\"",
                    WorkingDirectory = updatePath,
                };

                new ProcessRunner().Start(runInfo);

                Log.Info("Server update started.");
            }
            catch (Exception error) {
                Log.Error("Failed to start server update!", error);
            }
        }
コード例 #3
0
        private async Task BeginInstall(string updatePath, string msiFilename)
        {
            // TODO: Verify MSI?

            try {
                await PhotonAgent.Instance.Shutdown(TimeSpan.FromSeconds(30));
            }
            catch (Exception error) {
                Log.Error("An error occurred while shutting down!", error);
            }

            Log.Debug("Starting agent update...");

            try {
                var runInfo = new ProcessRunInfo {
                    Filename         = "msiexec.exe",
                    Arguments        = $"/i \"{msiFilename}\" /passive /l*vx \"log.txt\"",
                    WorkingDirectory = updatePath,
                };

                using (var process = new ProcessRunner().Start(runInfo)) {
                    if (process == null)
                    {
                        throw new ApplicationException("Failed to start process!");
                    }
                }

                Log.Info("Agent update started.");
            }
            catch (Exception error) {
                Log.Error("Failed to start agent update!", error);
            }
        }
コード例 #4
0
ファイル: ArgSplitTests.cs プロジェクト: wlclass/Photon
        public void SplitWithQuotes_NoArgs()
        {
            var info = ProcessRunInfo.FromCommand("\"program\"");

            Assert.That(info.Filename, Is.EqualTo("program"));
            Assert.That(info.Arguments, Is.Null);
        }
コード例 #5
0
ファイル: ArgSplitTests.cs プロジェクト: wlclass/Photon
        public void TrimArgs()
        {
            var info = ProcessRunInfo.FromCommand("program   arg1   arg2");

            Assert.That(info.Filename, Is.EqualTo("program"));
            Assert.That(info.Arguments, Is.EqualTo("arg1   arg2"));
        }
コード例 #6
0
ファイル: ArgSplitTests.cs プロジェクト: wlclass/Photon
        public void SplitNoQuotes_WhitespaceArgs()
        {
            var info = ProcessRunInfo.FromCommand("program ");

            Assert.That(info.Filename, Is.EqualTo("program"));
            Assert.That(info.Arguments, Is.Null);
        }
コード例 #7
0
        protected void RunCommandScript(string command)
        {
            var runInfo = ProcessRunInfo.FromCommand(command);

            runInfo.WorkingDirectory = ContentDirectory;

            var result = new ProcessRunner {
                Output = Output.Writer,
            }.Run(runInfo);

            if (result.ExitCode != 0)
            {
                throw new ApplicationException("Process terminated with a non-zero exit code!");
            }
        }
コード例 #8
0
        private ProcessResult GitCmd(string arguments, string printArgs = null, CancellationToken token = default(CancellationToken))
        {
            Output.WriteLine($" > git {printArgs ?? arguments}", ConsoleColor.White);

            var runInfo = new ProcessRunInfo {
                Filename         = Exe,
                Arguments        = arguments,
                WorkingDirectory = Source.RepositoryPath,
                EchoCommand      = false,
            };

            if (EnableTracing)
            {
                runInfo.EnvironmentVariables["GIT_TRACE"] = "1";
            }

            return(new ProcessRunner(context)
            {
                Output = Output,
            }.Run(runInfo, token));
        }
コード例 #9
0
ファイル: BuildTools.cs プロジェクト: romanjetich/Jenkins.NET
        public static async Task BuildSolution(IAgentContext context, CancellationToken token)
        {
            var args = new[] {
                "build",
                "\"Jenkins.Net.sln\"",
                "--configuration Release",
                "--no-incremental",
            };

            var info = new ProcessRunInfo {
                Filename         = "dotnet",
                Arguments        = string.Join(" ", args),
                WorkingDirectory = context.ContentDirectory,
            };

            var runner = new ProcessRunner(context);
            var result = await runner.RunAsync(info, token);

            if (result.ExitCode != 0)
            {
                throw new ApplicationException($"Build Failed! [{result.ExitCode}]");
            }
        }
コード例 #10
0
ファイル: TestTools.cs プロジェクト: romanjetich/Jenkins.NET
        public static async Task UnitTest(IAgentContext context, CancellationToken token)
        {
            var args = new[] {
                "test",
                "\"Jenkins.Net.Tests\\Jenkins.Net.Tests.csproj\"",
                "--configuration Release",
                "--no-build",
                "--filter Category=unit",
            };

            var info = new ProcessRunInfo {
                Filename         = "dotnet",
                Arguments        = string.Join(" ", args),
                WorkingDirectory = context.ContentDirectory,
            };

            var runner = new ProcessRunner(context);
            var result = await runner.RunAsync(info, token);

            if (result.ExitCode != 0)
            {
                throw new ApplicationException($"Unit-Test Failed! [{result.ExitCode}]");
            }
        }
コード例 #11
0
ファイル: ArgSplitTests.cs プロジェクト: wlclass/Photon
 public void IsEmpty_ThrowsException()
 {
     Assert.Throws <ArgumentNullException>(() => ProcessRunInfo.FromCommand(string.Empty));
 }
コード例 #12
0
ファイル: ArgSplitTests.cs プロジェクト: wlclass/Photon
 public void IsNull_ThrowsException()
 {
     Assert.Throws <ArgumentNullException>(() => ProcessRunInfo.FromCommand(null));
 }