下面列出了怎么用hudson.model.Queue.Item的API类实例代码及写法,或者点击链接到github查看源代码。
public void cancelSubBuilds(final PrintStream logger) {
final Queue q = getJenkins().getQueue();
synchronized (q) {
final int n = this.dynamicBuild.getNumber();
for (final Item i : q.getItems()) {
final ParentBuildAction parentBuildAction = i.getAction(ParentBuildAction.class);
if (parentBuildAction != null && this.dynamicBuild.equals(parentBuildAction.getParent())) {
q.cancel(i);
}
}
for (final DynamicSubProject c : this.dynamicBuild.getAllSubProjects()) {
final DynamicSubBuild b = c.getBuildByNumber(n);
if (b != null && b.isBuilding()) {
final Executor exe = b.getExecutor();
if (exe != null) {
logger.println(Messages.MatrixBuild_Interrupting(ModelHyperlinkNote.encodeTo(b)));
exe.interrupt();
}
}
}
}
}
/**
* Helper method to determine the template from a given item.
*
* @param item Item which includes a template.
* @return If the item includes a template then the template will be returned. Otherwise <code>null</code>.
*/
@CheckForNull
private static DockerJobTemplateProperty getJobTemplate(Item item) {
if (item.task instanceof Project) {
final Project<?, ?> project = (Project<?, ?>) item.task;
final DockerJobTemplateProperty p = project.getProperty(DockerJobTemplateProperty.class);
if (p != null) return p;
// backward compatibility. DockerJobTemplateProperty used to be a nested object in DockerJobProperty
final DockerJobProperty property = project.getProperty(DockerJobProperty.class);
if (property != null) {
return property.getDockerJobTemplate();
}
}
return null;
}
public CurrentBuildState waitForCompletion(final DynamicSubProject c, final TaskListener listener) throws InterruptedException {
// wait for the completion
int appearsCancelledCount = 0;
while (true) {
Thread.sleep(1000);
final CurrentBuildState b = c.getCurrentStateByNumber(this.dynamicBuild.getNumber());
if (b != null) { // its building or is done
if (b.isBuilding()) {
continue;
} else {
final Result buildResult = b.getResult();
if (buildResult != null) {
return b;
}
}
} else { // not building or done, check queue
final Queue.Item qi = c.getQueueItem();
if (qi == null) {
appearsCancelledCount++;
listener.getLogger().println(c.getName() + " appears cancelled: " + appearsCancelledCount);
} else {
appearsCancelledCount = 0;
}
if (appearsCancelledCount >= 5) {
listener.getLogger().println(Messages.MatrixBuild_AppearsCancelled(ModelHyperlinkNote.encodeTo(c)));
return new CurrentBuildState("COMPLETED", Result.ABORTED);
}
}
}
}
@Override
public synchronized Item getQueueItem() {
final Queue queue = Jenkins.getInstance().getQueue();
final Item[] items = queue.getItems();
for (int i = 0; i < items.length; i++) {
if (items[i].task != null && items[i].task.equals(this)) {
return items[i];
}
}
return super.getQueueItem();
}
public Task getTask() {
Item item = Queue.getInstance().getItem(queueItemId);
if (item != null) {
return item.task;
} else {
return null;
}
}
@Override
public void foldIntoExisting(Item item, Task owner, List<Action> actions) {
item.addOrReplaceAction(this);
}
@Override
public void onLoad(final ItemGroup<? extends hudson.model.Item> parent, final String name) throws IOException {
initRepos();
super.onLoad(parent, name);
}