static int Main(string[] args) { if (args.Length < 2) { System.Console.WriteLine("Usage: kudu.exe {appRoot} {wapTargets}"); return 1; } // The post receive hook launches the exe from sh and intereprets newline differently. // This fixes very wacky issues with how the output shows up in the conosle on push System.Console.Error.NewLine = "\n"; System.Console.Out.NewLine = "\n"; System.Environment.SetEnvironmentVariable("GIT_DIR", null, System.EnvironmentVariableTarget.Process); var appRoot = args[0]; var wapTargets = args[1]; string nugetCachePath = null; IEnvironment env = GetEnvironment(appRoot, nugetCachePath); // Setup the trace string tracePath = Path.Combine(env.ApplicationRootPath, Constants.TracePath, Constants.TraceFile); var tracer = new Tracer(tracePath); var traceFactory = new TracerFactory(() => tracer); // Calculate the lock path string lockPath = Path.Combine(env.ApplicationRootPath, Constants.LockPath); string deploymentLockPath = Path.Combine(lockPath, Constants.DeploymentLockFile); var deploymentLock = new LockFile(traceFactory, deploymentLockPath); var fs = new FileSystem(); var buildPropertyProvider = new BuildPropertyProvider(wapTargets); var builderFactory = new SiteBuilderFactory(buildPropertyProvider, env); var serverRepository = new GitDeploymentRepository(env.DeploymentRepositoryPath, traceFactory); var logger = new ConsoleLogger(); var deploymentManager = new DeploymentManager(serverRepository, builderFactory, env, fs, traceFactory, deploymentLock, logger); var step = tracer.Step("Executing external process", new Dictionary<string, string> { { "type", "process" }, { "path", "kudu.exe" }, { "arguments", appRoot + " " + wapTargets } }); using (step) { try { deploymentManager.Deploy(); } catch (System.Exception ex) { System.Console.Error.WriteLine(ex.Message); System.Console.Error.WriteLine(Resources.Log_DeploymentError); tracer.TraceError(ex); throw; } } if (logger.HasErrors) { System.Console.Error.WriteLine(Resources.Log_DeploymentError); return 1; } return 0; }
static int Main(string[] args) { // Turn flag on in app.config to wait for debugger on launch if (ConfigurationManager.AppSettings["WaitForDebuggerOnStart"] == "true") { while (!Debugger.IsAttached) { System.Threading.Thread.Sleep(100); } } if (args.Length < 2) { System.Console.WriteLine("Usage: kudu.exe appRoot wapTargets [deployer]"); return 1; } // The post receive hook launches the exe from sh and intereprets newline differently. // This fixes very wacky issues with how the output shows up in the conosle on push System.Console.Error.NewLine = "\n"; System.Console.Out.NewLine = "\n"; System.Environment.SetEnvironmentVariable("GIT_DIR", null, System.EnvironmentVariableTarget.Process); var appRoot = args[0]; var wapTargets = args[1]; string deployer = args.Length == 2 ? null : args[2]; string nugetCachePath = null; IEnvironment env = GetEnvironment(appRoot, nugetCachePath); // Setup the trace string tracePath = Path.Combine(env.RootPath, Constants.TracePath, Constants.TraceFile); var tracer = new Tracer(tracePath); var traceFactory = new TracerFactory(() => tracer); // Calculate the lock path string lockPath = Path.Combine(env.SiteRootPath, Constants.LockPath); string deploymentLockPath = Path.Combine(lockPath, Constants.DeploymentLockFile); var deploymentLock = new LockFile(traceFactory, deploymentLockPath); var fs = new FileSystem(); var buildPropertyProvider = new BuildPropertyProvider(); var builderFactory = new SiteBuilderFactory(buildPropertyProvider, env); var serverRepository = new GitDeploymentRepository(env.RepositoryPath, traceFactory); var settings = new XmlSettings.Settings(GetSettingsPath(env)); var settingsManager = new DeploymentSettingsManager(settings); var logger = new ConsoleLogger(); var deploymentManager = new DeploymentManager(serverRepository, builderFactory, env, fs, traceFactory, settingsManager, deploymentLock, logger); var step = tracer.Step("Executing external process", new Dictionary<string, string> { { "type", "process" }, { "path", "kudu.exe" }, { "arguments", appRoot + " " + wapTargets } }); using (step) { try { deploymentManager.Deploy(deployer); } catch { System.Console.Error.WriteLine(Resources.Log_DeploymentError); throw; } } if (logger.HasErrors) { System.Console.Error.WriteLine(Resources.Log_DeploymentError); return 1; } return 0; }