示例#1
0
 public CommandService(CommandParser commandParser, NotificationService notificationService, BuildFacade buildFacade, ILogger <CommandService> logger)
 {
     this.commandParser       = commandParser;
     this.notificationService = notificationService;
     this.buildFacade         = buildFacade;
     this.logger = logger;
 }
示例#2
0
        private async Task CreateBuildAsync(BuildFacade buildFacade, NotificationService notificationService, ITurnContext <IMessageActivity> turnContext, CancellationToken cancellationToken, string buildName)
        {
            var build = await buildFacade.CreateBuildAsync(buildName);

            await notificationService.AddNotificationAsync(build.Id, conversationId, ShouldWatch?WatchLevel.Stage : WatchLevel.Build);

            await notificationService.SendReplyAsync($"Created build {build}", turnContext, cancellationToken);
        }
        public MetricsService(BuildDbContext buildDb, BuildFacade buildFacade, ILogger <MetricsService> logger)
        {
            this.buildDb = buildDb;
            this.logger  = logger;

            buildFacade.BuildCreatedEvent += OnBuildCreated;
            buildFacade.StageUpdateEvent  += OnStageUpdate;
            buildFacade.BuildUpdateEvent  += OnBuildUpdate;
        }
        protected override async Task ExecuteInternalAsync(BuildFacade buildFacade, NotificationService notificationService, string text, string[] split, ITurnContext <IMessageActivity> turnContext, CancellationToken cancellationToken)
        {
            var card = notificationService.CreateCard(
                new AdaptiveTextBlock($"Builds in queue: {buildFacade.QueuedBuilds.Count}"),
                new ListBuilder(buildFacade.QueuedBuilds.Select(b => $"[{(DateTime.Now - b.QueueTime).ToDuration()}] {b}"))
                );

            await notificationService.SendCardAsync(card, turnContext);
        }
        public NotificationService(NotificationDbContext notificationDb, BuildFacade buildFacade, IConfiguration configuration, ILogger <NotificationService> logger)
        {
            this.notificationDb = notificationDb;
            this.logger         = logger;
            appId       = configuration.GetValue <string>("MicrosoftAppId");
            appPassword = configuration.GetValue <string>("MicrosoftAppPassword");

            buildFacade.StageUpdateEvent += OnStageUpdate;
            buildFacade.BuildUpdateEvent += OnBuildUpdate;
        }
示例#6
0
        protected override async Task ExecuteInternalAsync(BuildFacade buildFacade, NotificationService notificationService, string text, string[] split, ITurnContext <IMessageActivity> turnContext, CancellationToken cancellationToken)
        {
            conversationId = turnContext.Activity.Conversation.Id;

            var buildName = split[1];

            for (int i = 0; i < BuildCount; i++)
            {
                await CreateBuildAsync(buildFacade, notificationService, turnContext, cancellationToken, buildName);
            }
        }
示例#7
0
        public async Task ExecuteAsync(BuildFacade buildFacade, NotificationService notificationService, string text, ITurnContext <IMessageActivity> turnContext, CancellationToken cancellationToken)
        {
            var split = text.Split();

            //var (isValid, errorMessage) = Validate(text, split, turnContext);
            await ExecuteInternalAsync(buildFacade, notificationService, text, split, turnContext, cancellationToken);

            //if(isValid)
            //{
            //    await ExecuteInternalAsync(buildFacade, text, split, turnContext, cancellationToken);
            //}
            //else
            //{
            //    await SendMessageAsync(errorMessage, turnContext, cancellationToken);
            //}
        }
示例#8
0
        protected void Application_End(object sender, EventArgs e)
        {
            BuilderServiceSetting.SystemStatus = SystemStatusEnum.Stopping;
            BuildFacade facade = new BuildFacade();

            //关闭订阅通道
            facade.CloseRabbitMQBus();
            Thread.Sleep(2);
            DateTime now = DateTime.Now;

            Process.Info("消息生成中心", "BeginFlushPool", string.Format("开始时间:{0}", now), "FlushPool");
            facade.FlushPool();
            Thread.Sleep(2);
            Process.Info("消息生成中心", "BeginFlushPool", string.Format("结束时间:{0},耗时:{1}", DateTime.Now, (DateTime.Now - now).TotalMilliseconds), "FlushPool");
            BuilderServiceSetting.SystemStatus = SystemStatusEnum.Stopped;
        }
        protected override async Task ExecuteInternalAsync(BuildFacade buildFacade, NotificationService notificationService, string text, string[] split, ITurnContext <IMessageActivity> turnContext, CancellationToken cancellationToken)
        {
            // TODO: Don't duplicate.
            var command = Parser.Default.ParseArguments <StartBuildCommand, ShowBuildQueueCommand, HelpCommand, ShowAgentsCommand>(new List <string> {
                "help"
            });
            var helpText = HelpText.AutoBuild(command, h =>
            {
                h.Heading           = "Infrax bot command help.";
                h.Copyright         = string.Empty;
                h.AutoHelp          = false;
                h.AddDashesToOption = true;
                return(h);
            },
                                              e => e,
                                              true);
            var helpString = helpText.ToString();

            var card = notificationService.CreateCard(new AdaptiveTextBlock(helpString));
            await notificationService.SendCardAsync(card, turnContext);
        }
示例#10
0
 protected abstract Task ExecuteInternalAsync(BuildFacade buildFacade, NotificationService notificationService, string text, string[] split, ITurnContext <IMessageActivity> turnContext, CancellationToken cancellationToken);
 protected override async Task ExecuteInternalAsync(BuildFacade buildFacade, NotificationService notificationService, string text, string[] split, ITurnContext <IMessageActivity> turnContext, CancellationToken cancellationToken)
 {
     var card = notificationService.CreateCard(
         new AdaptiveTextBlock($"{buildFacade.Agents.Count(a => !a.IsIdle)}/{buildFacade.Agents.Count} agents are executing."),
         new ListBuilder(buildFacade.Agents.Select(a => $"{a.Name} is {(a.IsIdle ? "idle" : $"executing {a.ActiveBuild}")}")));
示例#12
0
        public void TestBuildFacade()
        {
            BuildFacade buFad = new BuildFacade();

            buFad.Build();
        }