@NotNull public <T> T getSingletonService(@NotNull Class<T> serviceClass) throws ServiceNotFoundException { return myServiceLocator.getSingletonService(serviceClass); }
@Override public void buildFinished(SRunningBuild build) { super.buildFinished(build); SBuildType type = build.getBuildType(); if (type != null) { CustomDataStorage checkConfigChanges = type.getCustomDataStorage(CustomDataStorageKeys.CHECKOUT_CONFIGURATION_CHANGE_HISTORY); String oldCheckoutConfigurationName = checkConfigChanges.getValue(type.getBuildTypeId()); if (StringUtils.isNotBlank(oldCheckoutConfigurationName)) { type.setCheckoutType(BuildTypeDescriptor.CheckoutType.valueOf(oldCheckoutConfigurationName)); checkConfigChanges.putValue(type.getBuildTypeId(), null); } } }
public StatusDescriptor getStatusDescriptor() { return new StatusDescriptor(this.status, this.statusText); }
public void notifyBuildFailed(@NotNull SRunningBuild sRunningBuild, @NotNull Set<SUser> users) { sendNotification(sRunningBuild.getFullName(), sRunningBuild.getBuildNumber(), "failed: " + sRunningBuild.getStatusDescriptor().getText(), "danger", users, sRunningBuild); }
private String getStatusMessage(SRunningBuild build, CommitStatus commitStatus) { switch (commitStatus) { case ERROR: case FAILURE: case SUCCESS: String buildDescription = Strings.nullToEmpty(build.getStatusDescriptor().getText()); if (!buildDescription.isEmpty()) { buildDescription = " : " + buildDescription; } return build.getFullName() + buildDescription; case PENDING: return constants.getBuildStarted() + build.getFullName(); default: return ""; } }
private void processBuildEvent(SRunningBuild sRunningBuild, BuildStateEnum state) { Loggers.SERVER.debug("About to process Slack notifications for " + sRunningBuild.getProjectId() + " at buildState " + state.getShortName()); for (SlackNotificationConfigWrapper slackNotificationConfigWrapper : getListOfEnabledSlackNotifications(sRunningBuild.getProjectId())){ if (state.equals(BuildStateEnum.BUILD_STARTED)){ slackNotificationConfigWrapper.slackNotification.setPayload(myManager.buildStarted(sRunningBuild, getPreviousNonPersonalBuild(sRunningBuild))); slackNotificationConfigWrapper.slackNotification.setEnabled(slackNotificationConfigWrapper.whc.isEnabledForBuildType(sRunningBuild.getBuildType()) && slackNotificationConfigWrapper.slackNotification.getBuildStates().enabled(BuildStateEnum.BUILD_STARTED)); } else if (state.equals(BuildStateEnum.BUILD_INTERRUPTED)){ slackNotificationConfigWrapper.slackNotification.setPayload(myManager.buildInterrupted(sRunningBuild, getPreviousNonPersonalBuild(sRunningBuild))); slackNotificationConfigWrapper.slackNotification.setEnabled(slackNotificationConfigWrapper.whc.isEnabledForBuildType(sRunningBuild.getBuildType()) && slackNotificationConfigWrapper.slackNotification.getBuildStates().enabled(BuildStateEnum.BUILD_INTERRUPTED)); } else if (state.equals(BuildStateEnum.BEFORE_BUILD_FINISHED)){ slackNotificationConfigWrapper.slackNotification.setPayload(myManager.beforeBuildFinish(sRunningBuild, getPreviousNonPersonalBuild(sRunningBuild))); slackNotificationConfigWrapper.slackNotification.setEnabled(slackNotificationConfigWrapper.whc.isEnabledForBuildType(sRunningBuild.getBuildType()) && slackNotificationConfigWrapper.slackNotification.getBuildStates().enabled(BuildStateEnum.BEFORE_BUILD_FINISHED)); } else if (state.equals(BuildStateEnum.BUILD_FINISHED)){ slackNotificationConfigWrapper.slackNotification.setEnabled(slackNotificationConfigWrapper.whc.isEnabledForBuildType(sRunningBuild.getBuildType()) && slackNotificationConfigWrapper.slackNotification.getBuildStates().enabled( BuildStateEnum.BUILD_FINISHED, sRunningBuild.getStatusDescriptor().isSuccessful(), this.hasBuildChangedHistoricalState(sRunningBuild))); slackNotificationConfigWrapper.slackNotification.setPayload(myManager.buildFinished(sRunningBuild, getPreviousNonPersonalBuild(sRunningBuild)));; } doPost(slackNotificationConfigWrapper.slackNotification); //Loggers.ACTIVITIES.debug("SlackNotificationListener :: " + myManager.getFormat(slackNotificationConfigWrapper.whc.getPayloadFormat()).getFormatDescription()); } }
if (previousBuild.isFinished()){ if (previousBuild.getStatusDescriptor().isSuccessful()){ this.buildResultPrevious = BUILD_STATUS_SUCCESS; } else { if (sRunningBuild.getStatusDescriptor().isSuccessful()){ this.buildResult = BUILD_STATUS_SUCCESS; this.color = "good";
if (previousBuild.isFinished()){ if (previousBuild.getStatusDescriptor().isSuccessful()){ this.buildResultPrevious = WebHookPayload.BUILD_STATUS_SUCCESS; } else { if (sRunningBuild.getStatusDescriptor().isSuccessful()){ this.buildResult = WebHookPayload.BUILD_STATUS_SUCCESS; if (this.buildResultPrevious.equals(this.buildResult)){
public String send(String project, String build, String branch, String statusText, String statusColor, Build bt) throws IOException String formattedPayload = getFormattedPayload(project, build, branch, statusText, statusColor, bt.getBuildTypeExternalId(), bt.getBuildId()); LOG.debug(formattedPayload);
@Nullable private RunningBuildEx getRunningBuild(@NotNull final HttpServletRequest request) { AuthorizationHeader header = AuthorizationHeader.getFrom(request); if (header != null) { SimpleCredentials cre = header.getBasicAuthCredentials(); if (cre != null) { long buildId = BuildAuthUtil.getBuildId(cre.getUsername()); if (buildId == -1) return null; return myRunningBuildsCollection.findRunningBuildById(buildId); } } return null; } }
private void populateResults(SRunningBuild sRunningBuild) { List<BuildProblemData> failureReasons = sRunningBuild.getFailureReasons(); if(failureReasons == null){ return; } HashSet<String> failureTestNames = new HashSet<String>(); HashSet<String> failureMessages = new HashSet<String>(); for(BuildProblemData reason : failureReasons){ if(reason.getType() == BuildProblemData.TC_FAILED_TESTS_TYPE){ List<TestInfo> failedTestMessages = sRunningBuild.getTestMessages(0, 2000); if(!failedTestMessages.isEmpty()) { for (TestInfo failedTest : failedTestMessages) { failureTestNames.add(failedTest.getName()); } } else { failureMessages.add(reason.getDescription()); } } else { failureMessages.add(reason.getDescription()); } } failedBuildMessages = new ArrayList<String>(failureMessages); failedTestNames = new ArrayList<String>(failureTestNames); }
public void notifyLabelingFailed(@NotNull Build build, @NotNull VcsRoot vcsRoot, @NotNull Throwable throwable, @NotNull Set<SUser> sUsers) { sendNotification(build.getFullName(), build.getBuildNumber(), "labeling failed", "danger", sUsers, build); }
public static String getArtifactoryBuildName(Build build, Map<String, String> runParameters) { String customBuildName = runParameters.get(RunnerParameterKeys.COSTUME_BUILD_NAME); if (StringUtils.isNotBlank(customBuildName)) { return customBuildName.trim(); } return build.getBuildTypeExternalId().trim(); } }
private ProgramCommandLine makeExecutableCommand(AnsibleRunConfig config) throws RunBuildException { String workingDir = getWorkingDirectory().getPath(); StringBuilder args = new StringBuilder(""); if (!StringUtil.isEmptyOrSpaces(config.getInventory())) { args.append("-i ").append(config.getInventory()); } if (StringUtil.isEmptyOrSpaces(config.getPlaybook())) { throw new RunBuildException("Ansible playbook should be specified"); } args.append(" ").append(config.getPlaybook()); if (!StringUtil.isEmptyOrSpaces(config.getOptions())) { args.append(" ").append(config.getOptions()); } return new SimpleProgramCommandLine(getProvidedEnvironmetVariables(), workingDir, config.getExecutable(), CommandLineArgumentsUtil.extractArguments(args.toString())); }
private String getCustomScriptExecutable(AnsibleRunConfig config) throws RunBuildException { String content = null; File scriptFile = null; if (config.getSourceCode() != null) { content = config.getSourceCode().replace("\r\n", "\n").replace("\r", "\n"); } if (StringUtil.isEmptyOrSpaces(content)) { throw new RunBuildException("Custom script source code cannot be empty"); } try { scriptFile = File.createTempFile("ansible_custom_exe", null, getBuildTempDirectory()); FileUtil.writeFileAndReportErrors(scriptFile, content); } catch (IOException e) { throw new RunBuildException("Failed to create a tmp file for custom ansible execution script"); } boolean executable = scriptFile.setExecutable(true, true); if (!executable) { throw new RunBuildException("Failed to set executable permissions to " + scriptFile.getAbsolutePath()); } return scriptFile.getAbsolutePath(); }
@NotNull private String makeUrl(@NotNull String relativePart) { String baseUrl = myHolder.getRootUrl(); if (!baseUrl.endsWith("/")) { baseUrl += "/"; } return baseUrl + relativePart; }
public void notifyBuildFailed(@NotNull SRunningBuild sRunningBuild, @NotNull Set<SUser> users) { sendNotification(sRunningBuild.getFullName(), sRunningBuild.getBuildNumber(), "failed: " + sRunningBuild.getStatusDescriptor().getText(), "danger", users, sRunningBuild); }
private String getStatusMessage( SRunningBuild build, CommitStatus commitStatus) { switch (commitStatus) { case ERROR: case FAILURE: case SUCCESS: String buildDescription = Strings.nullToEmpty(build.getStatusDescriptor().getText()); if (!buildDescription.isEmpty()) { buildDescription = " : " + buildDescription; } return build.getFullName() + buildDescription; case PENDING: return constants.getBuildStarted() + build.getFullName(); default: return ""; } }
public String send(String project, String build, String branch, String statusText, String statusColor, Build bt) throws IOException String formattedPayload = getFormattedPayload(project, build, branch, statusText, statusColor, bt.getBuildTypeExternalId(), bt.getBuildId()); LOG.debug(formattedPayload);
public void notifyLabelingFailed(@NotNull Build build, @NotNull VcsRoot vcsRoot, @NotNull Throwable throwable, @NotNull Set<SUser> sUsers) { sendNotification(build.getFullName(), build.getBuildNumber(), "labeling failed", "danger", sUsers, build); }