Example #1
0
        public override HttpHandlerResult Get()
        {
            var sessionId = GetQuery("session");

            try {
                if (!PhotonServer.Instance.Sessions.TryGet(sessionId, out var session))
                {
                    return(Response.BadRequest().SetText($"Server Session '{sessionId}' was not found!"));
                }

                if (!(session is ServerBuildSession buildSession))
                {
                    throw new Exception($"Session '{sessionId}' is not a valid build session!");
                }

                var response = new HttpBuildResultResponse {
                    BuildNumber     = buildSession.Build.Number,
                    Result          = buildSession.Result,
                    ProjectPackages = buildSession.PushedProjectPackages
                                      .Select(x => new HttpPackageReference(x)).ToArray(),
                };

                return(Response.Json(response));
            }
            catch (Exception error) {
                return(Response.Exception(error));
            }
        }
Example #2
0
        public async Task Run(CommandContext context)
        {
            var server = context.Servers.Get(ServerName);

            HttpBuildStartResponse startResult = null;

            await AuthRetryAsync(async() => {
                startResult = await StartSession(server);
            });

            var sessionId = startResult?.SessionId;

            if (string.IsNullOrEmpty(sessionId))
            {
                throw new ApplicationException($"An invalid session-id was returned! [{sessionId}]");
            }

            var position = 0;

            while (true)
            {
                var data = await UpdateOutput(server, sessionId, position);

                if (data == null)
                {
                    throw new ApplicationException("An empty session-output response was returned!");
                }

                if (data.IsComplete)
                {
                    break;
                }

                if (!data.IsModified)
                {
                    await Task.Delay(PollIntervalMs);

                    continue;
                }

                position = data.NewLength;

                ConsoleEx.Out.WriteLine(data.NewText, ConsoleColor.Gray);
            }

            Result = await GetResult(server, sessionId);

            if (Result.Result?.Successful ?? false)
            {
                ConsoleEx.Out.WriteLine("Build completed successfully.", ConsoleColor.DarkGreen);
            }
            else if (Result.Result?.Cancelled ?? false)
            {
                ConsoleEx.Out.WriteLine("Build cancelled.", ConsoleColor.DarkYellow);
            }
            else
            {
                ConsoleEx.Out.WriteLine("Build failed!", ConsoleColor.Red);

                if (!string.IsNullOrEmpty(Result.Result?.Message))
                {
                    ConsoleEx.Out.WriteLine(Result.Result.Message, ConsoleColor.DarkRed);
                }
            }
        }