@Override public void handle(Job<?, ?> job, PushHook hook, boolean ciSkip, BranchFilter branchFilter, MergeRequestLabelFilter mergeRequestLabelFilter) { try { if (job instanceof ParameterizedJobMixIn.ParameterizedJob) { ParameterizedJob project = (ParameterizedJobMixIn.ParameterizedJob) job; GitLabConnectionProperty property = job.getProperty(GitLabConnectionProperty.class); for (Trigger t : project.getTriggers().values()) { if (t instanceof GitLabPushTrigger) { final GitLabPushTrigger trigger = (GitLabPushTrigger) t; Integer projectId = hook.getProjectId(); if (property != null && property.getClient() != null && projectId != null && trigger != null) { GitLabClient client = property.getClient(); for (MergeRequest mergeRequest : getOpenMergeRequests(client, projectId.toString())) { if (mergeRequestLabelFilter.isMergeRequestAllowed(mergeRequest.getLabels())) { handleMergeRequest(job, hook, ciSkip, branchFilter, client, mergeRequest); } } } } } } else { LOGGER.log(Level.FINE, "Not a ParameterizedJob: {0}",LoggerUtil.toArray(job.getClass().getName())); } } catch (WebApplicationException | ProcessingException e) { LOGGER.log(Level.WARNING, "Failed to communicate with gitlab server to determine if this is an update for a merge request: " + e.getMessage(), e); } }
if (pj.isDisabled()) { logger.println(Messages.BuildTrigger_Disabled(ModelHyperlinkNote.encodeTo(downstream))); continue; continue; boolean scheduled = pj.scheduleBuild(pj.getQuietPeriod(), new UpstreamCause((Run) build)); if (Jenkins.getInstance().getItemByFullName(downstream.getFullName()) == downstream) { String name = ModelHyperlinkNote.encodeTo(downstream);
/** * Standard implementation of {@link ParameterizedJob#doBuild}. */ @SuppressWarnings("deprecation") public final void doBuild(StaplerRequest req, StaplerResponse rsp, @QueryParameter TimeDuration delay) throws IOException, ServletException { if (delay == null) { delay=new TimeDuration(TimeUnit.MILLISECONDS.convert(asJob().getQuietPeriod(), TimeUnit.SECONDS)); } if (!asJob().isBuildable()) { throw HttpResponses.error(SC_CONFLICT, new IOException(asJob().getFullName() + " is not buildable")); } // if a build is parameterized, let that take over ParametersDefinitionProperty pp = asJob().getProperty(ParametersDefinitionProperty.class); if (pp != null && !req.getMethod().equals("POST")) { // show the parameter entry form. req.getView(pp, "index.jelly").forward(req, rsp); return; } hudson.model.BuildAuthorizationToken.checkPermission(asJob(), asJob().getAuthToken(), req, rsp); if (pp != null) { pp._doBuild(req, rsp, delay); return; } Queue.Item item = Jenkins.getInstance().getQueue().schedule2(asJob(), delay.getTimeInSeconds(), getBuildCause(asJob(), req)).getItem(); if (item != null) { rsp.sendRedirect(SC_CREATED, req.getContextPath() + '/' + item.getUrl()); } else { rsp.sendRedirect("."); } }
delay = new TimeDuration(this.getJob().getQuietPeriod());
listener.getLogger().println("Scheduling project: " + ModelHyperlinkNote.encodeTo(project)); node.addAction(new LabelAction(Messages.BuildTriggerStepExecution_building_(project.getFullDisplayName()))); List<Action> actions = new ArrayList<>(); if (step.getWait()) { quietPeriod = project.getQuietPeriod(); throw new AbortException("Failed to trigger build of " + project.getFullName());
} else if (project instanceof ParameterizedJobMixIn.ParameterizedJob) { ParameterizedJobMixIn.ParameterizedJob abstractProject = (ParameterizedJobMixIn.ParameterizedJob)project; if (abstractProject.getQuietPeriod() > projectbuildDelay) { projectbuildDelay = abstractProject.getQuietPeriod();
delay = new TimeDuration(getJob().getQuietPeriod());
for (Trigger trigger : pJob.getTriggers().values()) { if (trigger instanceof GogsTrigger) { gTrigger = (GogsTrigger) trigger;
for (Trigger t : p.getTriggers().values()) { if (!(t instanceof SCMTrigger && scmd.synchronousPolling)) { if (t !=null && t.spec != null && t.tabs != null) { LOGGER.log(Level.WARNING, "The job {0} has a syntactically incorrect config and is missing the cron spec for a trigger", p.getFullName());
if (pj.isDisabled()) { logger.println(Messages.BuildTrigger_Disabled(ModelHyperlinkNote.encodeTo(downstream))); continue; continue; boolean scheduled = pj.scheduleBuild(pj.getQuietPeriod(), new UpstreamCause((Run) build)); if (Jenkins.getInstance().getItemByFullName(downstream.getFullName()) == downstream) { String name = ModelHyperlinkNote.encodeTo(downstream);
for (Trigger trigger : pJob.getTriggers().values()) { if (trigger instanceof BitBucketTrigger) { bTrigger = (BitBucketTrigger) trigger;
Object mixinJob = FieldUtils.readField(parameterizedJobMixIn, "val$job", true); ParameterizedJobMixIn.ParameterizedJob parameterizedJob = (ParameterizedJobMixIn.ParameterizedJob) mixinJob; quietPeriod = parameterizedJob.getQuietPeriod(); } catch (IllegalAccessException e) { LOGGER.error("Couldn't extract quiet period, falling back to {}", quietPeriod, e);
Object mixinJob = FieldUtils.readField(parameterizedJobMixIn, "val$job", true); ParameterizedJobMixIn.ParameterizedJob parameterizedJob = (ParameterizedJobMixIn.ParameterizedJob) mixinJob; quietPeriod = parameterizedJob.getQuietPeriod(); } catch (IllegalAccessException e) { LOGGER.error("Couldn't extract quiet period, falling back to {}", quietPeriod, e);
if (delay==null) delay=new TimeDuration(getJob().getQuietPeriod());
private JSONObject innerDispatch(final StaplerRequest req, final StaplerResponse rsp, final TimeDuration delay) throws IOException, ServletException { commandName = null; jobName = null; final String pathInfo = req.getPathInfo(); if (!decodeCommandAndJobNames(pathInfo)) { if (commandName == null) { throw new IllegalArgumentException("Command not provided"); } if (jobName == null) { throw new IllegalArgumentException("Job name not provided after command"); } } if (!COMMAND_FACTORIES_BY_NAME.containsKey(commandName)) { throw new IllegalArgumentException("Command not implemented"); } final Job job = getJob(jobName, req); final ParameterizedJobMixIn.ParameterizedJob jobMixin = (ParameterizedJobMixIn.ParameterizedJob) job; checkPermission(job, jobMixin, req, rsp); final TimeDuration actualDelay = delay == null ? new TimeDuration(jobMixin.getQuietPeriod()) : delay; final AbstractCommand.Factory factory = COMMAND_FACTORIES_BY_NAME.get(commandName); final AbstractCommand command = factory.create(); final JSONObject response; final JSONObject formData = req.getSubmittedForm(); final ObjectMapper mapper = EndpointHelper.MAPPER; final TeamBuildPayload teamBuildPayload = mapper.convertValue(formData, TeamBuildPayload.class); final BuildableItem buildable = (BuildableItem) job; response = command.perform(job, buildable, req, formData, mapper, teamBuildPayload, actualDelay); return response; }
@Nullable public WorkflowJobDependencyTrigger getWorkflowJobDependencyTrigger(@Nonnull ParameterizedJobMixIn.ParameterizedJob parameterizedJob) { Map<TriggerDescriptor, Trigger<?>> triggers = parameterizedJob.getTriggers(); for (Trigger trigger : triggers.values()) { if (trigger instanceof WorkflowJobDependencyTrigger) { return (WorkflowJobDependencyTrigger) trigger; } } if (parameterizedJob.getParent() instanceof ComputedFolder) { // search for the triggers of MultiBranch pipelines ComputedFolder<?> multiBranchProject = (ComputedFolder) parameterizedJob.getParent(); for (Trigger trigger : multiBranchProject.getTriggers().values()) { if (trigger instanceof WorkflowJobDependencyTrigger) { return (WorkflowJobDependencyTrigger) trigger; } } if (multiBranchProject.getParent() instanceof ComputedFolder) { // search for the triggers of GitHubOrg folders / Bitbucket folders ComputedFolder<?> grandParent = (ComputedFolder) multiBranchProject.getParent(); Map<TriggerDescriptor, Trigger<?>> grandParentTriggers = grandParent.getTriggers(); for (Trigger trigger : grandParentTriggers.values()) { if (trigger instanceof WorkflowJobDependencyTrigger) { return (WorkflowJobDependencyTrigger) trigger; } } } } return null; }
/** * support matrix plugin. * * @see JobInfoHelpers#triggerFrom(hudson.model.Job, java.lang.Class) */ @CheckForNull public static <T extends Trigger> T triggerFrom(final Job<?, ?> job, Class<T> tClass) { Job<?, ?> guessJob; if (job instanceof MatrixConfiguration) { guessJob = ((MatrixConfiguration) job).getParent(); } else { guessJob = job; } if (guessJob instanceof AbstractProject<?, ?>) { final AbstractProject<?, ?> abstractProject = (AbstractProject<?, ?>) guessJob; return abstractProject.getTrigger(tClass); } else if (guessJob instanceof ParameterizedJobMixIn.ParameterizedJob) { ParameterizedJobMixIn.ParameterizedJob pJob = (ParameterizedJobMixIn.ParameterizedJob) guessJob; for (Trigger candidate : pJob.getTriggers().values()) { if (tClass.isInstance(candidate)) { return tClass.cast(candidate); } } } return null; }
/** * Standard implementation of {@link ParameterizedJob#doBuild}. */ @SuppressWarnings("deprecation") public final void doBuild(StaplerRequest req, StaplerResponse rsp, @QueryParameter TimeDuration delay) throws IOException, ServletException { if (delay == null) { delay = new TimeDuration(asJob().getQuietPeriod()); } if (!asJob().isBuildable()) { throw HttpResponses.error(SC_CONFLICT, new IOException(asJob().getFullName() + " is not buildable")); } // if a build is parameterized, let that take over ParametersDefinitionProperty pp = asJob().getProperty(ParametersDefinitionProperty.class); if (pp != null && !req.getMethod().equals("POST")) { // show the parameter entry form. req.getView(pp, "index.jelly").forward(req, rsp); return; } hudson.model.BuildAuthorizationToken.checkPermission(asJob(), asJob().getAuthToken(), req, rsp); if (pp != null) { pp._doBuild(req, rsp, delay); return; } Queue.Item item = Jenkins.getInstance().getQueue().schedule2(asJob(), delay.getTimeInSeconds(), getBuildCause(asJob(), req)).getItem(); if (item != null) { rsp.sendRedirect(SC_CREATED, req.getContextPath() + '/' + item.getUrl()); } else { rsp.sendRedirect("."); } }
/** * Finds the GerritTrigger in a project. * * @param project the project. * @return the trigger if there is one, null otherwise. */ public static GerritTrigger getTrigger(@Nullable Job project) { if (project == null) { return null; } if (project instanceof ParameterizedJob) { // TODO: After 1.621, use ParameterizedJobMixIn.getTrigger ParameterizedJob parameterizedJob = (ParameterizedJob)project; for (Trigger p : parameterizedJob.getTriggers().values()) { if (GerritTrigger.class.isInstance(p)) { return GerritTrigger.class.cast(p); } } } return null; }
boolean schedule(Cause cause) { if (!asJob().isBuildable()) { return false; } List<Action> queueActions = new LinkedList<Action>(); queueActions.add(new ParametersAction(getParameterValues())); queueActions.add(new CauseAction(cause)); int quiet = Math.max(MIN_QUIET, asJob().getQuietPeriod()); final Jenkins jenkins = Jenkins.getInstance(); if (jenkins == null) { logger.log(Level.WARNING, "Tried to schedule a build while Jenkins was gone."); return false; } final Queue queue = jenkins.getQueue(); if (queue == null) { throw new IllegalStateException("The queue is not initialized?!"); } Queue.Item i = queue.schedule2(asJob(), quiet, queueActions).getItem(); return i != null && i.getFuture() != null; }