/** * Returns the {@link Cause}s that triggered a build. * * <p> * If a build sits in the queue for a long time, multiple build requests made during this period * are all rolled up into one build, hence this method may return a list. * * @return * can be empty but never null. read-only. * @since 1.321 */ public @Nonnull List<Cause> getCauses() { CauseAction a = getAction(CauseAction.class); if (a==null) return Collections.emptyList(); return Collections.unmodifiableList(a.getCauses()); }
public static Run<?, ?> getBuildBySHA1WithoutMergeBuilds(Job<?, ?> project, String sha1) { for (Run<?, ?> build : project.getBuilds()) { MergeRecord merge = build.getAction(MergeRecord.class); for(BuildData data : build.getActions(BuildData.class)) { if (hasLastBuild(data) && isNoMergeBuild(data, merge) && data.lastBuild.isFor(sha1)) { return build; } } } return null; }
/** * get the fingerprints associated with this build * * @return The fingerprints */ @Nonnull @Exported(name = "fingerprint", inline = true, visibility = -1) public Collection<Fingerprint> getBuildFingerprints() { FingerprintAction fingerprintAction = getAction(FingerprintAction.class); if (fingerprintAction != null) { return fingerprintAction.getFingerprints().values(); } return Collections.<Fingerprint>emptyList(); }
addGitLabBranchBuild(result, getBuildRevision(build), buildDatas.get(0).getRemoteUrls(), environment, gitLabClient); } else { final SCMRevisionAction scmRevisionAction = build.getAction(SCMRevisionAction.class);
@Override public void onSuccess(StepContext context, Object result) { PendingBuildsAction action = run.getAction(PendingBuildsAction.class); if (action != null && !action.getBuilds().isEmpty()) { TaskListener taskListener = getTaskListener(context); if (taskListener != null) { taskListener.getLogger().println("There are still pending GitLab builds. Please check your configuration"); } } context.onSuccess(result); }
@Override protected Void run() throws Exception { final String name = StringUtils.isEmpty(step.name) ? "jenkins" : step.name; CommitStatusUpdater.updateCommitStatus(run, null, step.state, name); PendingBuildsAction action = run.getAction(PendingBuildsAction.class); if (action != null) { action.startBuild(name); } return null; } }
@Override public void onStart(StepContext context) { CommitStatusUpdater.updateCommitStatus(run, getTaskListener(context), BuildState.running, name, step.builds, step.connection); PendingBuildsAction action = run.getAction(PendingBuildsAction.class); if (action != null) { action.startBuild(name); } }
@Override public void stop(@Nonnull Throwable cause) throws Exception { // should be no need to do anything special (but verify in JENKINS-26148) if (body != null) { PendingBuildsAction action = run.getAction(PendingBuildsAction.class); if (action != null) { for (String name : action.getBuilds()) { CommitStatusUpdater.updateCommitStatus(run, null, BuildState.canceled, name); } } body.cancel(cause); } }
public static Run<?, ?> getBuildByBranch(Job<?, ?> project, String branchName) { for (Run<?, ?> build : project.getBuilds()) { BuildData data = build.getAction(BuildData.class); MergeRecord merge = build.getAction(MergeRecord.class); if (hasLastBuild(data) && isNoMergeBuild(data, merge)) { for (Branch branch : data.lastBuild.getRevision().getBranches()) { if (branch.getName().endsWith("/" + branchName)) { return build; } } } } return null; }
@Override public void onFailure(StepContext context, Throwable t) { PendingBuildsAction action = run.getAction(PendingBuildsAction.class); if (action != null) { BuildState state = t instanceof FlowInterruptedException ? BuildState.canceled : BuildState.failed; for (String name : action.getBuilds()) { CommitStatusUpdater.updateCommitStatus(run, getTaskListener(context), state, name); } } context.onFailure(t); } })
@Override protected int run() throws Exception { Run r = getCurrentlyBuilding(); r.checkPermission(Run.UPDATE); StringParameterValue p = new StringParameterValue(name, value); ParametersAction a = r.getAction(ParametersAction.class); if (a!=null) { r.replaceAction(a.createUpdated(Collections.singleton(p))); } else { r.addAction(new ParametersAction(p)); } return 0; } }
@Override public void perform(Run<?,?> build, FilePath workspace, Launcher launcher, TaskListener listener) throws InterruptedException { try { listener.getLogger().println(Messages.Fingerprinter_Recording()); Map<String,String> record = new HashMap<String,String>(); EnvVars environment = build.getEnvironment(listener); if(targets.length()!=0) { String expandedTargets = environment.expand(targets); record(build, workspace, listener, record, expandedTargets); } FingerprintAction fingerprintAction = build.getAction(FingerprintAction.class); if (fingerprintAction != null) { fingerprintAction.add(record); } else { build.addAction(new FingerprintAction(build,record)); } if (enableFingerprintsInDependencyGraph) { Jenkins.getInstance().rebuildDependencyGraphAsync(); } } catch (IOException e) { Functions.printStackTrace(e, listener.error(Messages.Fingerprinter_Failed())); build.setResult(Result.FAILURE); } // failing to record fingerprints is an error but not fatal }
private static String getBuildRevision(Run<?, ?> build) { GitLabWebHookCause cause = build.getCause(GitLabWebHookCause.class); if (cause != null) { return cause.getData().getLastCommit(); } BuildData action = build.getAction(BuildData.class); if (action == null) { throw new IllegalStateException("No (git-plugin) BuildData associated to current build"); } Revision lastBuiltRevision = action.getLastBuiltRevision(); if (lastBuiltRevision == null) { throw new IllegalStateException("Last build has no associated commit"); } return action.getLastBuild(lastBuiltRevision.getSha1()).getMarked().getSha1String(); }
private boolean fitsSearchParams(@Nonnull Run run) { if (searchString == null) { return true; } if (fitsSearchString(run.getDisplayName())) { return true; } else if (fitsSearchString(run.getDescription())) { return true; } else if (fitsSearchString(run.getNumber())) { return true; } else if (fitsSearchString(run.getQueueId())) { return true; } else if (fitsSearchString(run.getResult())) { return true; } else if (run instanceof AbstractBuild && fitsSearchBuildVariables((AbstractBuild) run)) { return true; } else { ParametersAction parametersAction = run.getAction(ParametersAction.class); if (parametersAction != null && fitsSearchBuildParameters(parametersAction)) { return true; } } // Non of the fuzzy matches "liked" the search term. return false; }
@Override public void copy(Run<?, ?> original, Run<?, ?> copy, TaskListener listener) throws IOException, InterruptedException { for (Class<? extends Action> type : COPIED_ACTIONS) { Action a = original.getAction(type); if (a != null) { // Especially for ParametersAction we must replace any existing action. // For example, scheduleBuild2 will typically create an instance from default parameter values. copy.replaceAction(a); } } }
private void addProcessedYamlToDotCiInfoAction(final Run run, final Map config) throws IOException { final DotCiBuildInfoAction dotCiBuildInfoAction = run.getAction(DotCiBuildInfoAction.class); if (dotCiBuildInfoAction == null) { run.addAction(new DotCiBuildInfoAction(new Yaml().dump(config))); } else { dotCiBuildInfoAction.setBuildConfiguration(new Yaml().dump(config)); } run.save(); }
@Override public void buildEnvironmentFor(@Nonnull Run r, @Nonnull EnvVars envs, @Nonnull TaskListener listener) throws IOException, InterruptedException { if (r instanceof MatrixRun) { MatrixChildParametersAction childParameters = r.getAction(MatrixChildParametersAction.class); if (childParameters != null) { for(ParameterValue p : childParameters.getParameters()) { putEnvVar(envs, p.getName(), String.valueOf(p.getValue())); } } } }
public String getOneLineTestResults() { AbstractTestResultAction testResultAction = build.getAction(AbstractTestResultAction.class); if (testResultAction == null) { return "No test results found."; } return String.format( "%d tests run, %d skipped, %d failed.", testResultAction.getTotalCount(), testResultAction.getSkipCount(), testResultAction.getFailCount() ); }
private void addExecutionInfoAction(final Run run, final ShellCommands commands) throws IOException { final DotCiBuildInfoAction dotCiBuildInfoAction = run.getAction(DotCiBuildInfoAction.class); if (dotCiBuildInfoAction == null) { run.addAction(new DotCiBuildInfoAction(commands)); } else { dotCiBuildInfoAction.addCommands(commands); } run.save(); }
@Exported public boolean isRestartEnabled() { ExecutionModelAction executionModelAction = run.getAction(ExecutionModelAction.class); return executionModelAction != null && !run.isBuilding() && run.hasPermission(Item.BUILD) && run.getParent().isBuildable() && getExecution() != null; }