@Override public String getShortDescription() { return Messages.AbstractProject_DownstreamBuildInProgress(up.getName()); } }
@Override public String getShortDescription() { return Messages.AbstractProject_UpstreamBuildInProgress(up.getName()); } }
private void populate(Collection<? extends AbstractProject> projectList) { for (AbstractProject<?,?> p : projectList) { if (polledProjects.contains(p)) { // Project will be readded at the queue, so that we always use // the longest path LOGGER.fine("removing project " + p.getName() + " for re-add"); polledProjects.remove(p); } LOGGER.fine("adding project " + p.getName()); polledProjects.add(p); // Add all downstream dependencies populate(p.getDownstreamProjects()); } }
public void run() { SecurityContext oldContext = ACL.impersonate(ACL.SYSTEM); try { Set<AbstractProject> topLevelProjects = new HashSet<AbstractProject>(); // Get all top-level projects LOGGER.fine("assembling top level projects"); for (AbstractProject p : Jenkins.getInstance().allItems(AbstractProject.class)) if (p.getUpstreamProjects().size() == 0) { LOGGER.fine("adding top level project " + p.getName()); topLevelProjects.add(p); } else { LOGGER.fine("skipping project since not a top level project: " + p.getName()); } populate(topLevelProjects); for (AbstractProject p : polledProjects) { LOGGER.fine("running project in correct dependency order: " + p.getName()); runnable.run(p); } } finally { SecurityContextHolder.setContext(oldContext); } }
private PollingResult pollWithWorkspace(TaskListener listener, SCM scm, R lb, @Nonnull FilePath ws, WorkspaceList l) throws InterruptedException, IOException { // if doing non-concurrent build, acquire a workspace in a way that causes builds to block for this workspace. // this prevents multiple workspaces of the same job --- the behavior of Hudson < 1.319. // // OTOH, if a concurrent build is chosen, the user is willing to create a multiple workspace, // so better throughput is achieved over time (modulo the initial cost of creating that many workspaces) // by having multiple workspaces Node node = lb.getBuiltOn(); Launcher launcher = ws.createLauncher(listener).decorateByEnv(getEnvironment(node,listener)); WorkspaceList.Lease lease = l.acquire(ws, !concurrentBuild); try { String nodeName = node != null ? node.getSelfLabel().getName() : "[node_unavailable]"; listener.getLogger().println("Polling SCM changes on " + nodeName); LOGGER.fine("Polling SCM changes of " + getName()); if (pollingBaseline==null) // see NOTE-NO-BASELINE above calcPollingBaseline(lb,launcher,listener); PollingResult r = scm.poll(this, launcher, ws, listener, pollingBaseline); pollingBaseline = r.remote; return r; } finally { lease.release(); } }
LOGGER.fine("Polling SCM changes of " + getName()); if (pollingBaseline==null) // see NOTE-NO-BASELINE above calcPollingBaseline(getLastBuild(),null,listener);
@Override public String getShortDescription() { return Messages.AbstractProject_UpstreamBuildInProgress(up.getName()); } }
/** * Use the configuration name. */ @Override protected String getChildName(AbstractTestResultAction tr) { return tr.owner.getProject().getName(); }
/** * Use the configuration name. */ @Override protected String getChildName(AbstractTestResultAction tr) { return tr.owner.getProject().getName(); }
/** * Use the configuration name. */ @Override protected String getChildName(AbstractTestResultAction tr) { return tr.owner.getProject().getName(); }
@Override public String getShortDescription() { return Messages.AbstractProject_DownstreamBuildInProgress(up.getName()); } }
@Override public String getShortDescription() { return Messages.AbstractProject_DownstreamBuildInProgress(up.getName()); } }
/** * Use the configuration name. */ @Override protected String getChildName(AbstractTestResultAction tr) { return tr.owner.getProject().getName(); }
public void deleteBuild(final AbstractProject<?, ?> project, final int buildNumber) { AbstractBuild<?, ?> build = getBuild(project, buildNumber); this.security.checkPermission(build, Run.DELETE); log.debug("Deleting build: {} #{}", project.getName(), buildNumber); try { build.delete(); } catch (IOException e) { throw new ServiceRuntimeException("Delete failed for build " + project.getName() + " #" + buildNumber, e); } }
public void keepBuild(final AbstractProject<?, ?> project, final int buildNumber, final boolean release) { AbstractBuild<?, ?> build = getBuild(project, buildNumber); this.security.checkPermission(build, Run.UPDATE); log.debug("{} build: {} #{}", $(release ? "Releasing" : "Keeping", project.getName(), buildNumber)); try { build.keepLog(!release); } catch (IOException e) { throw new ServiceRuntimeException((release ? "Releasing failed for build #" : "Keeping failed for build ") + project.getName() + " #" + buildNumber); } }
/** * Finds a {@link AbstractProject} that has the name closest to the given name. */ public static AbstractProject findNearest(String name) { List<AbstractProject> projects = Hudson.getInstance().getItems(AbstractProject.class); String[] names = new String[projects.size()]; for( int i=0; i<projects.size(); i++ ) names[i] = projects.get(i).getName(); String nearest = EditDistance.findNearest(name, names); return (AbstractProject)Hudson.getInstance().getItem(nearest); }
public FormValidation doCheck(@AncestorInPath AbstractProject project, @QueryParameter String value) { // Require CONFIGURE permission on this project if(!project.hasPermission(Item.CONFIGURE)) return FormValidation.ok(); for (String name : Util.tokenize(fixNull(value), ",")) { name = name.trim(); if(Hudson.getInstance().getItemByFullName(name)==null) return FormValidation.error(hudson.tasks.Messages.BuildTrigger_NoSuchProject(name,AbstractProject.findNearest(name).getName())); } return FormValidation.ok(); }