Exemple #1
0
        public async Task HandleMessage(CommandContext commandContext)
        {
            var channelName = commandContext.ChannelName;
            var topic       = await _slackApiService.GetChannelTopic(channelName);

            var train = Train.Parse(topic);

            await _slackApiService.PostMessage(commandContext.ChannelName, $"Running the build pipeline...");

            var messageToSelf = await _slackApiService.ReadLatestMessageToSelf();

            var store = SlackMessageStorage.Parse(messageToSelf);

            var channel = store.FirstOrDefault(c => c.ChannelName == channelName);

            if (channel == null)
            {
                channel = new SlackMessageStorage
                {
                    ChannelName = channelName,
                    ShipUrl     = ""
                };

                messageToSelf = SlackMessageStorage.Stringify(store);
                await _slackApiService.PostMessage("@slackbot", messageToSelf);
            }
            try
            {
                await _externalBuildTrigger.TriggerBuild(channel);
            }
            catch (Exception ex)
            {
                var atDriver = await _slackApiService.FormatAtNotificationFromUserName(train.Carriages[0].Riders[0].Name);

                await _slackApiService.PostMessage(commandContext.ChannelName, $"Something went wrong with the build pipeline {atDriver}");

                Console.WriteLine(ex.ToString());
            }
        }
Exemple #2
0
        async Task AdvanceCarriage(Train train, string channelName)
        {
            // clear ready
            foreach (var rider in train.Carriages[0].Riders)
            {
                if (rider.Flairs.Flairs.Contains(RiderFlair.Ready))
                {
                    rider.Flairs.Flairs.Remove(RiderFlair.Ready);
                    rider.Flairs.PostflairWhitepace = "";
                }
            }
            train.Carriages[0].Riders[0].Flairs.Flairs.Remove(RiderFlair.EverReady);

            await HandlePhaseAdvancement(train, channelName);

            await _slackApiService.SetChannelTopic(channelName, train.ToString());

            if (train.Phase == Phase.Testing)
            {
                var messageToSelf = await _slackApiService.ReadLatestMessageToSelf();

                var store = SlackMessageStorage.Parse(messageToSelf);

                var channel = store.FirstOrDefault(c => c.ChannelName == channelName);
                if (channel == null)
                {
                    channel = new SlackMessageStorage
                    {
                        ChannelName = channelName,
                        ShipUrl     = ""
                    };

                    messageToSelf = SlackMessageStorage.Stringify(store);
                    await _slackApiService.PostMessage("@slackbot", messageToSelf);
                }

                try
                {
                    // trigger the build
                    await _externalBuildTriggerService.TriggerBuild(channel);

                    await _slackApiService.PostMessage(channelName, $"Starting the build...");
                }
                catch (Exception ex)
                {
                    var atHere = await _slackApiService.FormatAtHere();

                    await _slackApiService.PostMessage(channelName, $"Something went wrong triggering the build... {atHere}");

                    Console.WriteLine(ex.ToString());
                }
            }

            string deploymentUrl = null;

            if (train.Phase == Phase.Production)
            {
                var messageToSelf = await _slackApiService.ReadLatestMessageToSelf();

                var channels = SlackMessageStorage.Parse(messageToSelf);

                var channel = channels.FirstOrDefault(c => c.ChannelName == channelName);
                if (channel?.ShipUrl != null)
                {
                    // link to deploy url in channel
                    deploymentUrl = channel.ShipUrl;
                }
                else
                {
                    deploymentUrl = "Isn't configured for some reason...";
                }
            }

            if (train.Carriages.Count > 0)
            {
                await HandleBeginPhaseMessaging(train, channelName, deploymentUrl);
            }
        }