Example #1
0
        private void stopBuildMenuItem_Click(object sender, EventArgs e)
        {
            var project = GetSelectedProject();

            if (project == null)
            {
                return;
            }
            try
            {
                if (project.AllBuildDetails != null && project.AllBuildDetails.Status != null &&
                    project.AllBuildDetails.Status.IsInProgress)
                {
                    JenkinsService.SafeStopBuild(project);
                }
                else if (project.Queue.InQueue && project.Queue.Id > 0)
                {
                    JenkinsService.SafeRemoveFromQueue(project);
                }
            }
            catch (Exception ex)
            {
                LoggingHelper.LogError(logger, ex);
                XtraMessageBox.Show(string.Format(JenkinsTrayResources.StopBuildFailed_Text, ex.Message),
                                    JenkinsTrayResources.StopBuildFailed_Caption);
            }
        }
Example #2
0
        private void OpenProjectConsolePage(Project project)
        {
            if (project == null)
            {
                return;
            }
            string url = JenkinsService.GetConsolePage(project);

            UIUtils.OpenWebPage(url, logger);
        }
        public void WhenJenkinsServiceIsCreatedWithNullOrEmptyJobThenAllJobsAreListed()
        {
            var restMock = new Mock <IJenkinsRestClient>();

            var jenkinsService = new JenkinsService(restMock.Object, Url, null);
            var views          = jenkinsService.Views();

            restMock.Verify(o => o.GetServerAsync(Url, false));
            Check.That(views).IsNotNull();
        }
        public async Task WhenEmptyViewIsRequieredThenProvideRunningJobUrlToStopCommand(bool jobRunning, string expectedStopRestUrl)
        {
            // Arrange
            var restMock = new Mock <IJenkinsRestClient>();

            restMock.Setup(x => x.GetServerAsync(Url, false)).Returns(() =>
            {
                var task = new Task <JenkinsServer>(() => new JenkinsServer {
                    Node = new JenkinsNode {
                        Jobs = new[]
                        {
                            new JenkinsJob {
                                DisplayName = Job1, Status = new JenkinsJobStatus(), Url = Url1
                            },
                        }
                    }
                }
                                                    );
                task.Start();
                return(task);
            });

            restMock.Setup(o => o.GetJobAsync(It.Is <string>(s => s.Contains(Url1)))).Returns(() =>
            {
                var task = new Task <JenkinsJob>(() => new JenkinsJob
                {
                    Url = Url1,
                    LastCompletedBuild = new JenkinsBuild {
                        Number = jobRunning ? BuildNumber1 : BuildNumberfake
                    },
                    LastFailedBuild = null,
                    Builds          = new[] { new JenkinsBuild {
                                                  Number = BuildNumber1, Url = Url2
                                              }, new JenkinsBuild {
                                                  Number = BuildNumber2, Url = Url3
                                              }, new JenkinsBuild {
                                                  Number = BuildNumber3, Url = Url4
                                              } }
                });
                task.Start();
                return(task);
            });

            // Act
            var jenkinsService = new JenkinsService(restMock.Object, Url, null);
            var views          = await jenkinsService.Views();

            // Asserts
            var jobsView = views.Single().Jobs.ToList();

            Check.That(jobsView[0].StopBuildOnline).Equals(new StopBuildCommand(It.IsAny <IJenkinsRestClient>(), expectedStopRestUrl));
        }
Example #5
0
        public ServersSettingsController(ServerListControl serverListControl,
                                         ProjectListControl projectListControl,
                                         BarStaticItem statusTextItem,
                                         BarEditItem statusProgressItem)
        {
            this.serverListControl  = serverListControl;
            this.projectListControl = projectListControl;
            this.statusTextItem     = statusTextItem;
            this.statusProgressItem = statusProgressItem;

            configurationService = (ConfigurationService)ContextRegistry.GetContext().GetObject("ConfigurationService");
            jenkinsService       = (JenkinsService)ContextRegistry.GetContext().GetObject("JenkinsService");
            serverListControl.ConfigurationService  = configurationService;
            projectListControl.ConfigurationService = configurationService;
            projectListControl.JenkinsService       = jenkinsService;
        }
Example #6
0
        private void runBuildMenuItem_Click(object sender, EventArgs e)
        {
            Project project = GetSelectedProject();

            if (project == null)
            {
                return;
            }
            try
            {
                JenkinsService.SafeRunBuild(project);
            }
            catch (Exception ex)
            {
                LoggingHelper.LogError(logger, ex);
                XtraMessageBox.Show(string.Format(JenkinsTrayResources.RunBuildFailed_Text, ex.Message),
                                    JenkinsTrayResources.RunBuildFailed_Caption);
            }
        }
Example #7
0
 public JenkinsModule(DiscordSocketClient client, JenkinsService jenkins)
 {
     _client  = client;
     _jenkins = jenkins;
 }
Example #8
0
        private async Task <DialogTurnResult> FinalStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            try
            {
                if (stepContext.Result != null)
                {
                    var entitiDetails = (EntitiDetails)stepContext.Result;
                    strIntent = entitiDetails.Intent;
                    switch (entitiDetails.Intent)
                    {
                    case "Acronym":
                        // If the child dialog ("ActionDialog") was cancelled or the user failed to confirm, the Result here will be null.
                        var result = (EntitiDetails)stepContext.Result;
                        var msg    = string.Empty;
                        // Now we have all the Action details call the action service.
                        string         URL = "https://floraa-acronymapi.azurewebsites.net/api/values/GetAcronym?id=" + result.Acronym;
                        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(URL);
                        req.Method = "GET";
                        req.Headers.Add("X-ApiKey", "6b0f60c2-40ef-43d5-89ef-905e048d610b:a99b5fcb-064f-433a-afde-e0e46f441005");
                        req.Accept = "text/json";
                        using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse())
                        {
                            if (resp.StatusCode == HttpStatusCode.OK)
                            {
                                StreamReader reader    = new StreamReader(resp.GetResponseStream());
                                string       strResult = reader.ReadToEnd();
                                if (strResult.Length > 2)
                                {
                                    msg = strResult;
                                }
                                else
                                {
                                    msg = $"The Acronym of {result.Acronym} not found please try other word";
                                }
                            }
                            else
                            {
                                msg = $"The Acronym of {result.Acronym} not found please try other word";
                            }
                        }
                        await stepContext.Context.SendActivityAsync(MessageFactory.Text(msg), cancellationToken);

                        msg = "Thank you " + getUserName(stepContext) + ". Did I take care of your request?";
                        return(await stepContext.PromptAsync(nameof(ConfirmPrompt), new PromptOptions { Prompt = MessageFactory.Text(msg) }, cancellationToken));

                    case "Trigger_Service":

                        string strTag = "";
                        if (entitiDetails.Tag.ToUpper() == "SMOKE")
                        {
                            strTag            = entitiDetails.Tag;
                            entitiDetails.Tag = "QASmoke";
                        }
                        else if (entitiDetails.Tag.ToUpper() == "REGRESSION")
                        {
                            strTag            = "Regression";
                            entitiDetails.Tag = "Sanity";

                            JenkinsService jenkinsService = new JenkinsService();
                            var            lastBuild      = jenkinsService.getLastBuildStatus(entitiDetails.Project).Result;
                            var            lastBuildType  = lastBuild["actions"];

                            if (lastBuild != null)
                            {
                                var x        = lastBuildType[0]["parameters"][0];
                                var sTagType = lastBuildType[0]["parameters"][0]["value"];
                                //   var a1 = lastBuildType["_class"]["parameter"];

                                var lastBuildStatus = lastBuild["result"].ToString();
                                if (string.IsNullOrEmpty(lastBuildStatus) || lastBuildStatus == "{}")
                                {
                                    await stepContext.Context.SendActivityAsync(MessageFactory.Text("Same user or some other user has already triggerd this project test execution please try after some time."), cancellationToken);

                                    return(await stepContext.EndDialogAsync(cancellationToken : cancellationToken));
                                }
                                else if (sTagType == "@Sanity" || sTagType == "@Regression")
                                {
                                    var lastBuildTime = (long)lastBuild["timestamp"];

                                    var timeStamp = (long)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalMilliseconds;

                                    var timeDiference = (timeStamp - lastBuildTime);

                                    var timeMinutes = timeDiference / (1000 * 60);
                                    if (timeMinutes <= 1200)
                                    {
                                        var url = lastBuild["url"].ToString() + "Serenity_20Report/";
                                        await stepContext.Context.SendActivityAsync(MessageFactory.Text("This is already executed in last one hour click on the link to view results: [Regression Results](" + url + ")"), cancellationToken);

                                        return(await stepContext.EndDialogAsync(cancellationToken : cancellationToken));
                                    }
                                }
                            }
                        }


                        strProject = entitiDetails.Project + "-" + entitiDetails.Tag;
                        string         sPOSTURL       = strJenkinUrl + "/job/" + entitiDetails.Project + "/buildWithParameters?TagName=@" + entitiDetails.Tag + "&EmailID=" + entitiDetails.Email + "&SrcName=Floraa";
                        HttpWebRequest requestObjPost = (HttpWebRequest)HttpWebRequest.Create(sPOSTURL);
                        requestObjPost.Method = "POST";
                        requestObjPost.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes("TestAuto:Ihealth@123"));
                        requestObjPost.ContentType       = "application/json";
                        requestObjPost.UserAgent         = @"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36";
                        requestObjPost.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
                        using (var streamWriter = new StreamWriter(requestObjPost.GetRequestStream()))
                        {
                            var httpResponse = (HttpWebResponse)requestObjPost.GetResponse();
                            if (httpResponse.StatusCode == HttpStatusCode.Created)
                            {
                                if (entitiDetails.Tag.ToUpper() == "AUTODERIVATION")
                                {
                                    await stepContext.Context.SendActivityAsync(MessageFactory.Text("Triggered " + entitiDetails.Tag + " for " + entitiDetails.Project + ". The results will be sent to your email shortly."), cancellationToken);
                                }
                                else
                                {
                                    await stepContext.Context.SendActivityAsync(MessageFactory.Text("Triggered " + strTag + " for " + entitiDetails.Project + ". The results will be sent to your email shortly. \n You can also see the live execution in below URL: [Click Here](http://usddccntr04:8080/) "), cancellationToken);
                                }

                                if (entitiDetails.Tag == "Sanity")
                                {
                                    await stepContext.Context.SendActivityAsync(MessageFactory.Text("Estimated time to complete the execution 30-45 mins"), cancellationToken);
                                }
                            }
                        }

                        isContinue = false;
                        msg        = "Thank you " + getUserName(stepContext) + ". Did I take care of your request?";
                        return(await stepContext.PromptAsync(nameof(ConfirmPrompt), new PromptOptions { Prompt = MessageFactory.Text(msg) }, cancellationToken));

                    case "Build_Deployment":
                        strProject = entitiDetails.Project;
                        string buildURL = string.Empty;
                        if (strProject == "App-Deployment")
                        {
                            buildURL = Configuration["JenkinsBuildDeploymentURL"] + "/jenkins/job/floraa_qadeployer/buildWithParameters?token=floradeploy&Floraa_Intent=" + entitiDetails.Buildwar + "&Email=" + entitiDetails.Email + "&Environment=" + entitiDetails.Environment.ToLower();
                        }
                        else if (strProject == "DB-Deployment")
                        {
                            buildURL = Configuration["JenkinsBuildDeploymentURL"] + "/jenkins/job/PCA_Sql_Runner/buildWithParameters?Sqlpath=" + entitiDetails.Buildwar + "&DBInstance=" + entitiDetails.DbInstance + "&EmailRecipients=" + entitiDetails.Email;
                        }
                        HttpWebRequest reqObj = (HttpWebRequest)HttpWebRequest.Create(buildURL);
                        reqObj.Method = "POST";
                        //reqObj.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes("TestAuto:Ihealth@123"));
                        reqObj.ContentType       = "application/json";
                        reqObj.UserAgent         = @"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36";
                        reqObj.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
                        using (var streamWriter = new StreamWriter(reqObj.GetRequestStream()))
                        {
                            var httpResponse = (HttpWebResponse)reqObj.GetResponse();
                            if (httpResponse.StatusCode == HttpStatusCode.Created)
                            {
                                if (strProject == "App-Deployment")
                                {
                                    msg = "App Deployment with war " + entitiDetails.Buildwar + " to " + entitiDetails.Environment + " is initiated. you will receive the email shortly.";
                                }
                                else
                                {
                                    msg = entitiDetails.Project + " with " + entitiDetails.Buildwar + " script  on to " + entitiDetails.DbInstance + " is initiated. you will receive the email shortly.";
                                }
                                await stepContext.Context.SendActivityAsync(MessageFactory.Text(msg), cancellationToken);
                            }
                        }
                        isContinue = false;
                        msg        = "Thank you " + getUserName(stepContext) + ". Did I take care of your request?";
                        return(await stepContext.PromptAsync(nameof(ConfirmPrompt), new PromptOptions { Prompt = MessageFactory.Text(msg) }, cancellationToken));

                    default:
                        await stepContext.Context.SendActivityAsync(MessageFactory.Text("Sorry.. I didn't get you Please Try again.\nThank you"), cancellationToken);

                        isContinue = false;
                        return(await stepContext.EndDialogAsync(cancellationToken : cancellationToken));
                    }
                }
                else
                {
                    isContinue = false;

                    var msg = "Thank you " + getUserName(stepContext);
                    await stepContext.Context.SendActivityAsync(MessageFactory.Text(msg), cancellationToken);

                    return(await stepContext.EndDialogAsync(cancellationToken : cancellationToken));
                }
            }
            catch (Exception ex)
            {
                await stepContext.Context.SendActivityAsync(MessageFactory.Text("Error occured while running service. Please try agian\nThank you " + getUserName(stepContext) + ".\n" + ex), cancellationToken);

                throw;
            }
        }
Example #9
0
 public JenkinsPuller([NotNull] JenkinsService buildServerService)
 {
     this.BuildServerService = buildServerService;
 }
        public async Task WhenViewWithoutSpecificJobsIsRequiredThenViewIsCalledWithAllJobs()
        {
            // Arrange
            var restMock = new Mock <IJenkinsRestClient>();

            restMock.Setup(o => o.GetViewAsync(this.GetApiString(View1), false)).Returns(
                () =>
            {
                var task =
                    new Task <JenkinsView>(
                        () =>
                        new JenkinsView
                {
                    Name = View1,
                    Url  = Url,
                    Jobs =
                        new List <JenkinsJob>
                    {
                        new JenkinsJob {
                            DisplayName = Job1, Status = new JenkinsJobStatus(), Url = Url1
                        },
                        new JenkinsJob {
                            DisplayName = Job2, Status = new JenkinsJobStatus(), Url = Url2
                        }
                    }
                    .ToArray()
                });
                task.Start();
                return(task);
            });

            restMock.Setup(o => o.GetJobAsync(It.Is <string>(s => s.Contains(Url1)))).Returns(
                () =>
            {
                var task = new Task <JenkinsJob>(
                    () =>
                    new JenkinsJob
                {
                    Url = Url1,
                    LastCompletedBuild = new JenkinsBuild {
                        Number = BuildNumber1
                    },
                    LastFailedBuild = new JenkinsBuild {
                        Number = BuildNumberfake
                    },
                    Builds = new[] { new JenkinsBuild {
                                         Number = BuildNumber1, Status = JenkinsBuildStatus.Success
                                     } }
                }
                    );
                task.Start();
                return(task);
            });

            restMock.Setup(o => o.GetJobAsync(It.Is <string>(s => s.Contains(Url2)))).Returns(
                () =>
            {
                var task = new Task <JenkinsJob>(
                    () =>
                    new JenkinsJob
                {
                    Url = Url2,
                    LastCompletedBuild = new JenkinsBuild {
                        Number = BuildNumberfake
                    },
                    LastFailedBuild = new JenkinsBuild {
                        Number = BuildNumber2
                    },
                    Builds = new[] { new JenkinsBuild {
                                         Number = BuildNumber2, Status = JenkinsBuildStatus.Unstable
                                     } }
                }
                    );
                task.Start();
                return(task);
            });

            // Act
            var jenkinsService = new JenkinsService(
                restMock.Object,
                Url,
                new List <JenkinsViewModel>
            {
                new JenkinsViewModel(View1)
            });
            var views = await jenkinsService.Views();

            // Asserts
            restMock.Verify(o => o.GetViewAsync(this.GetApiString(View1), false), Times.Once);

            var jenkinsViewViewModels = views as IList <JenkinsViewViewModel> ?? views.ToList();

            Check.That(jenkinsViewViewModels[0].ViewName).Equals(View1);

            var jobsView0 = jenkinsViewViewModels[0].Jobs.ToList();

            Check.That(jobsView0[0].DisplayName).Equals(Job1);
            Check.That(jobsView0[0].LastRanBuildNumber).Equals(BuildNumber1);
            Check.That(jobsView0[0].BuildRunning).IsFalse();
            Check.That(jobsView0[0].RunBuildOnline).Equals(new RunBuildCommand(It.IsAny <IJenkinsRestClient>(), Url1 + "build"));
            Check.That(jobsView0[1].DisplayName).Equals(Job2);
            Check.That(jobsView0[1].LastRanBuildNumber).Equals(BuildNumber2);
            Check.That(jobsView0[1].BuildRunning).IsFalse();
            Check.That(jobsView0[1].RunBuildOnline).Equals(new RunBuildCommand(It.IsAny <IJenkinsRestClient>(), Url2 + "build"));
        }
Example #11
0
 public JenkinsController(JenkinsService jenkinsService)
 {
     this._jenkinsService = jenkinsService;
     JenkinsService.Populate();
 }