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); } }
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)); }
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; }
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); } }
public JenkinsModule(DiscordSocketClient client, JenkinsService jenkins) { _client = client; _jenkins = jenkins; }
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; } }
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")); }
public JenkinsController(JenkinsService jenkinsService) { this._jenkinsService = jenkinsService; JenkinsService.Populate(); }