public override async Task RunAsync()
        {
            var assemblyFilename = Path.Combine(BinDirectory, AssemblyFilename);

            if (!File.Exists(assemblyFilename))
            {
                throw new FileNotFoundException($"The assembly file '{assemblyFilename}' could not be found!");
            }

            Domain = new ServerDomain();
            Domain.Initialize(assemblyFilename);

            var context = new ServerDeployContext {
                DeploymentNumber      = DeploymentNumber,
                Project               = Project,
                Agents                = PhotonServer.Instance.Agents.All.ToArray(),
                ProjectPackageId      = ProjectPackageId,
                ProjectPackageVersion = ProjectPackageVersion,
                EnvironmentName       = EnvironmentName,
                ScriptName            = ScriptName,
                WorkDirectory         = WorkDirectory,
                BinDirectory          = BinDirectory,
                ContentDirectory      = ContentDirectory,
                Packages              = PackageClient,
                ConnectionFactory     = ConnectionFactory,
                Output                = Output,
                ServerVariables       = Variables,
            };

            await Domain.RunDeployScript(context, TokenSource.Token);
        }
Exemple #2
0
        public override async Task RunAsync()
        {
            var assemblyFilename = Path.Combine(BinDirectory, AssemblyFilename);

            if (!File.Exists(assemblyFilename))
            {
                throw new FileNotFoundException($"The assembly file '{assemblyFilename}' could not be found!");
            }

            Domain = new ServerDomain();
            Domain.Initialize(assemblyFilename);

            using (var contextOutput = new DomainOutput()) {
                contextOutput.OnWrite     += (text, color) => Output.Write(text, color);
                contextOutput.OnWriteLine += (text, color) => Output.WriteLine(text, color);
                contextOutput.OnWriteRaw  += (text) => Output.WriteRaw(text);

                var context = new ServerDeployContext {
                    DeploymentNumber      = Deployment.Number,
                    Project               = Project,
                    Agents                = PhotonServer.Instance.Agents.All.ToArray(),
                    ProjectPackageId      = ProjectPackageId,
                    ProjectPackageVersion = ProjectPackageVersion,
                    EnvironmentName       = EnvironmentName,
                    ScriptName            = ScriptName,
                    WorkDirectory         = WorkDirectory,
                    BinDirectory          = BinDirectory,
                    ContentDirectory      = ContentDirectory,
                    Packages              = PackageClient,
                    ConnectionFactory     = ConnectionFactory,
                    Output                = contextOutput,
                    ServerVariables       = Variables,
                };

                try {
                    await Domain.RunDeployScript(context, TokenSource.Token);

                    Deployment.IsSuccess = true;
                }
                catch (OperationCanceledException) {
                    Deployment.IsCancelled = true;
                    throw;
                }
                catch (Exception error) {
                    Deployment.Exception = error.UnfoldMessages();
                    throw;
                }
                finally {
                    Deployment.IsComplete = true;
                    Deployment.Duration   = DateTime.UtcNow - Deployment.Created;
                    //Deployment.ApplicationPackages = ?;
                    Deployment.Save();

                    await Deployment.SetOutput(Output.GetString());

                    // TODO: Save alternate version with ansi characters removed
                }
            }
        }