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(); }
/// <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 }