Exemple #1
0
        private CliProcess StartProcess()
        {
            // Create process start info
            var startInfo = new ProcessStartInfo
            {
                FileName               = _filePath,
                WorkingDirectory       = _workingDirectory,
                Arguments              = _arguments,
                StandardOutputEncoding = _standardOutputEncoding,
                StandardErrorEncoding  = _standardErrorEncoding
            };

            // Set environment variables
#if NET45
            foreach (var variable in _environmentVariables)
            {
                startInfo.EnvironmentVariables.Add(variable.Key, variable.Value);
            }
#else
            foreach (var variable in _environmentVariables)
            {
                startInfo.Environment.Add(variable.Key, variable.Value);
            }
#endif

            // Create and start process
            var process = new CliProcess(startInfo, _standardOutputObserver, _standardErrorObserver);
            process.Start();

            return(process);
        }
 /// <summary>
 /// 发布项目
 /// </summary>
 /// <param name="FileName">项目解决方案路径</param>
 public void Publish(string FileName)
 {
     using (CliProcess p = new CliProcess())
     {
         p.ExecDotNetProcess("publish", FileName);
     }
     GC.Collect();
 }
 /// <summary>
 /// 更新依赖
 /// </summary>
 ///  <param name="FileName">项目解决方案路径</param>
 public void Restore(string FileName)
 {
     using (CliProcess p = new CliProcess())
     {
         p.ExecDotNetProcess("restore", FileName);
     }
     GC.Collect();
 }
 /// <summary>
 /// 编译生成
 /// </summary>
 ///  <param name="FileName">项目解决方案路径</param>
 public void Build(string FileName)
 {
     using (CliProcess p = new CliProcess())
     {
         p.ExecDotNetProcess("build", FileName);
     }
     GC.Collect();
 }
 /// <summary>
 /// 重启一个服务
 /// </summary>
 /// <param name="ServiceName"></param>
 public void Restart(string config, string ServiceName)
 {
     using (CliProcess p = new CliProcess())
     {
         p.ExecSupervisorProcess("-c", config, "restart", ServiceName);
     }
     GC.Collect();
 }
 /// <summary>
 /// 清理项目
 /// </summary>
 ///  <param name="FileName">项目解决方案路径</param>
 public void Clean(string FileName)
 {
     using (CliProcess p = new CliProcess())
     {
         p.ExecDotNetProcess("clean", FileName);
     }
     GC.Collect();
 }
 /// <summary>
 /// 配置文件修改后可以使用该命令加载新的配置
 /// </summary>
 public void Update(string config)
 {
     using (CliProcess p = new CliProcess())
     {
         p.ExecSupervisorProcess("-c", config, "update");
     }
     GC.Collect();
 }
 /// <summary>
 /// 重新启动配置中的所有程序
 /// </summary>
 public void Reload(string config)
 {
     using (CliProcess p = new CliProcess())
     {
         p.ExecSupervisorProcess("-c", config, "reload");
     }
     GC.Collect();
 }
 /// <summary>
 /// 通过shell生成镜像
 /// </summary>
 /// <param name="Images">镜像名称</param>
 public void BulidImage(string Images, string UpdateFile)
 {
     using (CliProcess p = new CliProcess())
     {
         //此外 '.' 不可省略
         p.ExecDockerProcess("build", "-f", Path.Combine(UpdateFile, "Dockerfile"), "-t", string.Format("{0} .", Images));
     }
     GC.Collect();
 }
 /// <summary>
 /// 启动镜像
 /// </summary>
 public void BuildContainer(string Images, int Port, string CName)
 {
     //docker run --name=aspnetcoredocker -p 7777:80 -d  aspnetcoredocker
     using (CliProcess p = new CliProcess())
     {
         //生成镜像 镜像默认是80
         p.ExecDockerProcess("run", string.Format("--name={0}", CName), "-p", string.Format("{0}:80", Port), "-d", Images);
     }
     GC.Collect();
 }
Exemple #11
0
        /// <inheritdoc />
        public async Task <ExecutionResult> ListenAsync(bool reuse = true)
        {
            return(await Task.Run(async() => {
                CliProcess process = StartProcess();
                try
                {
                    if (reuse)
                    {
                        this.CurrentProcess = process;
                    }
                    using (_cancellationToken.Register(() => process.TryKill(_killEntireProcessTree)))
                    {
                        ProcessId = process.Id;

                        // Pipe stdin
                        process.PipeStandardInput(_standardInput);

                        // Wait for exit
                        await process.WaitForExitAsync();

                        // Throw if cancelled
                        _cancellationToken.ThrowIfCancellationRequested();

                        // Create execution result
                        var result = new ExecutionResult(process.ExitCode,
                                                         process.StandardOutput,
                                                         process.StandardError,
                                                         process.StartTime,
                                                         process.ExitTime);

                        // Validate execution result
                        ValidateExecutionResult(result);
                        return result;
                    }
                }
                finally
                {
                    if (!reuse)
                    {
                        process.Dispose();
                    }
                }
            }));

            // Set up execution context
        }