本文整理了Java中hudson.model.Executor
类的一些代码示例,展示了Executor
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Executor
类的具体详情如下:
包路径:hudson.model.Executor
类名称:Executor
[英]Thread that executes builds.
[中]执行构建的线程。
代码示例来源:origin: jenkinsci/jenkins
/**
* Gets the one off {@link Executor} building this job, if it's being built.
* Otherwise null.
* @since 1.433
*/
public @CheckForNull Executor getOneOffExecutor() {
for( Computer c : Jenkins.getInstance().getComputers() ) {
for (Executor e : c.getOneOffExecutors()) {
if(e.getCurrentExecutable()==this)
return e;
}
}
return null;
}
代码示例来源:origin: jenkinsci/jenkins
@CheckForNull
public Node getNode() {
return executor.getOwner().getNode();
}
代码示例来源:origin: jenkinsci/jenkins
/**
* Looks up the currently running build, if known.
* <p>While most {@link Run} implementations do add a {@link RunExecution} to the stack for the duration of the build,
* those which have a different implementation of {@link Run#run} (or which do additional work after {@link Run#execute} completes)
* may not consistently or ever keep an execution on the stack.
* In such cases this method will return null, meaning that {@link CheckPoint#block(BuildListener, String)} and {@link CheckPoint#report} will do nothing.
* @return a running build, or null if one has not been recorded
*/
synchronized @CheckForNull RunExecution peek() {
Executor e = Executor.currentExecutor();
if (e != null) {
Stack<RunExecution> s = stack.get(e);
if (s != null && !s.isEmpty()) {
return s.peek();
}
}
return null;
}
代码示例来源:origin: jenkinsci/jenkins
@Override
public void run() {
for( Executor e : executors )
if(e.isIdle())
e.interrupt();
}
});
代码示例来源:origin: jenkinsci/jenkins
/**
* Gets the current {@link Computer} that the build is running.
* This method only works when called during a build, such as by
* {@link hudson.tasks.Publisher}, {@link hudson.tasks.BuildWrapper}, etc.
* @return the {@link Computer} associated with {@link Executor#currentExecutor}, or (consistently as of 1.591) null if not on an executor thread
*/
public static @Nullable Computer currentComputer() {
Executor e = Executor.currentExecutor();
return e != null ? e.getOwner() : null;
}
代码示例来源:origin: jenkinsci/jenkins
@Override
public String toString() {
return String.format("JobOffer[%s #%d]",executor.getOwner().getName(), executor.getNumber());
}
}
代码示例来源:origin: jenkinsci/jenkins
/**
* Finds the executor currently running a given process.
* @param executable a possibly running executable
* @return the executor (possibly a {@link OneOffExecutor}) whose {@link Executor#getCurrentExecutable} matches that,
* or null if it could not be found (for example because the execution has already completed)
* @since 1.607
*/
@CheckForNull
public static Executor of(Executable executable) {
Jenkins jenkins = Jenkins.getInstanceOrNull(); // TODO confirm safe to assume non-null and use getInstance()
if (jenkins == null) {
return null;
}
for (Computer computer : jenkins.getComputers()) {
for (Executor executor : computer.getAllExecutors()) {
if (executor.getCurrentExecutable() == executable) {
return executor;
}
}
}
return null;
}
代码示例来源:origin: jenkinsci/jenkins
public Builder with(@CheckForNull Computer computer) {
if (computer == null) {
return this;
}
if (computer.isOnline()) {
final List<Executor> executors = computer.getExecutors();
final boolean acceptingTasks = computer.isAcceptingTasks();
for (Executor e : executors) {
definedExecutors++;
onlineExecutors++;
if (e.getCurrentWorkUnit() != null) {
busyExecutors++;
} else {
idleExecutors++;
if (acceptingTasks) availableExecutors++;
}
}
} else {
final int numExecutors = computer.getNumExecutors();
definedExecutors += numExecutors;
if (computer.isConnecting()) {
connectingExecutors += numExecutors;
}
}
return this;
}
代码示例来源:origin: jenkinsci/jenkins
public @CheckForNull CauseOfBlockage getCauseOfBlockage(BuildableItem item) {
Node node = getNode();
if (node == null) {
return CauseOfBlockage.fromMessage(Messages._Queue_node_has_been_removed_from_configuration(executor.getOwner().getDisplayName()));
return CauseOfBlockage.fromMessage(Messages._Queue_executor_slot_already_in_use());
if (executor.getOwner().isOffline()) {
return new CauseOfBlockage.BecauseNodeIsOffline(node);
if (!executor.getOwner().isAcceptingTasks()) { // Node.canTake (above) does not consider RetentionStrategy.isAcceptingTasks
return new CauseOfBlockage.BecauseNodeIsNotAcceptingTasks(node);
代码示例来源:origin: org.jenkins-ci.plugins.workflow/workflow-durable-task-step
@Override public String getStatus() {
// Yet another copy of the same logic; perhaps this should be factored into some method returning a union of Queue.Item and PlaceholderExecutable?
for (Queue.Item item : Queue.getInstance().getItems()) {
if (item.task instanceof PlaceholderTask && ((PlaceholderTask) item.task).context.equals(getContext())) {
return "waiting for " + item.task.getFullDisplayName() + " to be scheduled; blocked: " + item.getWhy();
}
}
Jenkins j = Jenkins.getInstance();
if (j != null) {
COMPUTERS: for (Computer c : j.getComputers()) {
for (Executor e : c.getExecutors()) {
Queue.Executable exec = e.getCurrentExecutable();
if (exec instanceof PlaceholderTask.PlaceholderExecutable && ((PlaceholderTask.PlaceholderExecutable) exec).getParent().context.equals(getContext())) {
return "running on " + c.getName();
}
}
}
}
return "node block appears to be neither running nor scheduled";
}
代码示例来源:origin: org.jenkins-ci.plugins.workflow/workflow-durable-task-step
@Override
public void stop(Throwable cause) throws Exception {
for (Queue.Item item : Queue.getInstance().getItems()) {
// if we are still in the queue waiting to be scheduled, just retract that
if (item.task instanceof PlaceholderTask && ((PlaceholderTask) item.task).context.equals(getContext())) {
Queue.getInstance().cancel(item);
break;
}
}
Jenkins j = Jenkins.getInstance();
if (j != null) {
// if we are already running, kill the ongoing activities, which releases PlaceholderExecutable from its sleep loop
// Similar to Executor.of, but distinct since we do not have the Executable yet:
COMPUTERS: for (Computer c : j.getComputers()) {
for (Executor e : c.getExecutors()) {
Queue.Executable exec = e.getCurrentExecutable();
if (exec instanceof PlaceholderTask.PlaceholderExecutable && ((PlaceholderTask.PlaceholderExecutable) exec).getParent().context.equals(getContext())) {
PlaceholderTask.finish(((PlaceholderTask.PlaceholderExecutable) exec).getParent().cookie);
break COMPUTERS;
}
}
}
}
// Whether or not either of the above worked (and they would not if for example our item were canceled), make sure we die.
super.stop(cause);
}
代码示例来源:origin: org.jenkins-ci.plugins/pipeline-build-step
private @CheckForNull String running(@Nonnull Executor e) {
Queue.Executable exec = e.getCurrentExecutable();
if (exec instanceof Run) {
Run<?,?> run = (Run) exec;
for (BuildTriggerAction.Trigger trigger : BuildTriggerAction.triggersFor(run)) {
if (trigger.context.equals(getContext())) {
return "running " + run;
}
}
}
return null;
}
代码示例来源:origin: jenkinsci/jenkins
@Override
public void buildEnvironmentFor(Job j, EnvVars env, TaskListener listener) throws IOException, InterruptedException {
Jenkins jenkins = Jenkins.getInstance();
String rootUrl = jenkins.getRootUrl();
if(rootUrl!=null) {
env.put("JENKINS_URL", rootUrl);
env.put("HUDSON_URL", rootUrl); // Legacy compatibility
env.put("JOB_URL", rootUrl+j.getUrl());
}
String root = jenkins.getRootDir().getPath();
env.put("JENKINS_HOME", root);
env.put("HUDSON_HOME", root); // legacy compatibility
Thread t = Thread.currentThread();
if (t instanceof Executor) {
Executor e = (Executor) t;
env.put("EXECUTOR_NUMBER", String.valueOf(e.getNumber()));
if (e.getOwner() instanceof MasterComputer) {
env.put("NODE_NAME", "master");
} else {
env.put("NODE_NAME", e.getOwner().getName());
}
Node n = e.getOwner().getNode();
if (n != null)
env.put("NODE_LABELS", Util.join(n.getAssignedLabels(), " "));
}
}
}
代码示例来源:origin: jenkinsci/jenkins
Queue queue = Queue.getInstance();
if (this instanceof Queue.Task) {
queue.cancel((Queue.Task) this);
for (Queue.Item i : queue.getItems()) {
Item item = Tasks.getItemOf(i.task);
while (item != null) {
for (Computer c : Jenkins.getInstance().getComputers()) {
for (Executor e : c.getAllExecutors()) {
final WorkUnit workUnit = e.getCurrentWorkUnit();
final Executable executable = workUnit != null ? workUnit.getExecutable() : null;
final SubTask subtask = executable != null ? getParentOf(executable) : null;
while (item != null) {
if (item == this) {
buildsInProgress.put(e, e.getCurrentExecutable());
e.interrupt(Result.ABORTED);
break;
if (!entry.getKey().isAlive()
|| entry.getValue() != entry.getKey().getCurrentExecutable()) {
iterator.remove();
entry.getKey().interrupt(Result.ABORTED);
Jenkins.getInstance().rebuildDependencyGraphAsync();
代码示例来源:origin: jenkinsci/jenkins
onStartBuilding();
try {
Computer computer = Computer.currentComputer();
Charset charset = null;
if (computer != null) {
charset = computer.getDefaultCharset();
this.charset = charset.name();
logger = createLogger();
listener = createBuildListener(job, logger, charset);
listener.started(getCauses());
Authentication auth = Jenkins.getAuthentication();
if (!auth.equals(ACL.SYSTEM)) {
String id = auth.getName();
} catch( InterruptedException e) {
result = Executor.currentExecutor().abortResult();
listener.getLogger().println(Messages.Run_BuildAborted());
Executor.currentExecutor().recordCauseOfInterruption(Run.this,listener);
LOGGER.log(Level.INFO, this + " aborted", e);
} catch( Throwable e ) {
代码示例来源:origin: jenkinsci/jenkins
@Override
public boolean cancel(boolean mayInterruptIfRunning) {
Queue q = Jenkins.getInstance().getQueue();
synchronized (q) {
synchronized (this) {
if(!executors.isEmpty()) {
if(mayInterruptIfRunning)
for (Executor e : executors)
e.interrupt();
return mayInterruptIfRunning;
}
return q.cancel(task);
}
}
}
代码示例来源:origin: jenkinsci/jenkins-test-harness
/**
* Waits until Jenkins finishes building everything, including those builds in the queue, or fail the test
* if the specified timeout milliseconds is exceeded.
*/
protected void waitUntilNoActivityUpTo(int timeout) throws Exception {
long startTime = System.currentTimeMillis();
int streak = 0;
while (true) {
Thread.sleep(100);
if (isSomethingHappening())
streak=0;
else
streak++;
if (streak>2) // the system is quiet for a while
return;
if (System.currentTimeMillis()-startTime > timeout) {
List<Executable> building = new ArrayList<Executable>();
for (Computer c : jenkins.getComputers()) {
for (Executor e : c.getExecutors()) {
if (e.isBusy())
building.add(e.getCurrentExecutable());
}
}
throw new AssertionError(String.format("Jenkins is still doing something after %dms: queue=%s building=%s",
timeout, Arrays.asList(jenkins.getQueue().getItems()), building));
}
}
}
代码示例来源:origin: jenkinsci/instant-messaging-plugin
private int getBusyExecutors() {
int busyExecutors = 0;
Computer[] computers = Jenkins.getInstance().getComputers();
for (Computer compi : computers) {
for (Executor executor : compi.getExecutors()) {
if (executor.isBusy()) {
busyExecutors++;
}
}
}
return busyExecutors;
}
代码示例来源:origin: jenkinsci/tfs-plugin
private void cancelPreviousPullRequestBuilds(Job job, TeamPullRequestMergedDetailsAction pullReqeuestMergedDetails, Queue queue) {
RunList<?> allBuilds = job.getBuilds();
for (Run run : allBuilds) {
TeamPullRequestMergedDetailsAction cause = run.getAction(TeamPullRequestMergedDetailsAction.class);
if (cause != null && run.isBuilding()) {
if (cause instanceof TeamPullRequestMergedDetailsAction &&
cause.gitPullRequest.getPullRequestId() == pullReqeuestMergedDetails.gitPullRequest.getPullRequestId()) {
LOGGER.info("Canceling previously triggered Job: " + run.getFullDisplayName());
Executor executor = run.getExecutor();
if (executor != null)
executor.doStop();
Queue.Item item = queue.getItem(run.getQueueId());
if (item != null)
queue.cancel(item);
}
}
}
}
代码示例来源:origin: jenkinsci/workflow-cps-plugin
/**
* Verify that we kill endlessly recursive NonCPS code cleanly and don't leave remnants.
* This is a bit of extra caution to go along with {@link #endlessRecursion()} to ensure
* we don't trigger other forms of failure with the StackOverflowError.
*/
@Test
@Ignore /** Intermittent failures because triggers a longstanding unrelated SandboxResolvingClassloader bug
resolved in https://github.com/jenkinsci/script-security-plugin/pull/160 */
public void endlessRecursionNonCPS() throws Exception {
Assume.assumeTrue(!Functions.isWindows()); // Sidestep false failures specific to a few Windows build environments.
String script = "@NonCPS def getThing(){return thing == null}; \n" +
"node { echo getThing(); } ";
WorkflowJob job = jenkins.jenkins.createProject(WorkflowJob.class, "recursion");
job.setDefinition(new CpsFlowDefinition(script, true));
// Should have failed with error about excessive recursion depth
WorkflowRun r = jenkins.assertBuildStatus(Result.FAILURE, job.scheduleBuild2(0).get());
Assert.assertTrue("No queued FlyWeightTask for job should remain after failure", jenkins.jenkins.getQueue().isEmpty());
for (Computer c : jenkins.jenkins.getComputers()) {
for (Executor ex : c.getExecutors()) {
if (ex.isBusy()) {
fail(ex.getCurrentExecutable().toString());
}
}
}
}
内容来源于网络,如有侵权,请联系作者删除!