public static async Task Main(string[] args) { var cancel = new CancellationTokenSource(); var jobQueue = new JobQueue(); Console.WriteLine("Helium CI UI"); var agentManager = await AgentManager.Load(Path.Combine(ConfDir, "agents"), cancel.Token); var projectManager = await ProjectManager.Load(Path.Combine(ConfDir, "projects"), jobQueue, cancel.Token); var server = new Grpc.Core.Server { Services = { BuildServer.BindService(new BuildServerImpl(agentManager, jobQueue)) }, Ports = { new ServerPort("0.0.0.0", 6000, ServerCredentials.Insecure) }, }; try { server.Start(); try { await CreateHostBuilder(agentManager, projectManager).Build().RunAsync(); } finally { cancel.Cancel(); } } finally { await server.ShutdownAsync(); } }