/** * Returns the {@link Promotion} object that represents the successful promotion. * * @return null if the promotion has never been successful, or if it was but the record is already * lost. */ public Promotion getSuccessfulPromotion(JobPropertyImpl jp) { if (promotion >= 0) { PromotionProcess p = jp.getItem(name); if (p != null) return p.getBuildByNumber(promotion); } return null; }
/** Gets the last successful {@link Promotion}. */ public Promotion getLastFailed() { PromotionProcess p = getProcess(); for (Integer n : Iterators.reverse(promotionAttempts)) { Promotion b = p.getBuildByNumber(n); if (b != null && b.getResult() != Result.SUCCESS) return b; } return null; }
@Test public void testRebuild() throws Exception { // job with promotion process FreeStyleProject p1 = j.createFreeStyleProject("promojob"); // setup promotion process JobPropertyImpl promotion = new JobPropertyImpl(p1); p1.addProperty(promotion); PromotionProcess proc = promotion.addProcess("promo"); proc.conditions.add(new SelfPromotionCondition(false)); // build it FreeStyleBuild b1 = j.assertBuildStatusSuccess(p1.scheduleBuild2(0)); j.waitUntilNoActivity(); // verify that promotion happened Assert.assertSame(proc.getBuilds().getLastBuild().getTarget(), b1); // job with parameter FreeStyleProject p2 = j.createFreeStyleProject("paramjob"); // add promoted build param p2.addProperty( new ParametersDefinitionProperty( new PromotedBuildParameterDefinition( "var", "promojob", "promo", "promoted build param to test rebuild"))); // build with parameter FreeStyleBuild b2 = j.assertBuildStatusSuccess(p2.scheduleBuild2(0)); // validate presence of parameter ParametersAction a1 = b2.getAction(ParametersAction.class); Assert.assertNotNull(a1); Assert.assertFalse(a1.getParameters().isEmpty()); ParameterValue v1 = a1.getParameter("var"); Assert.assertTrue(v1 instanceof PromotedBuildParameterValue); PromotedBuildParameterValue pbpv1 = (PromotedBuildParameterValue) v1; Assert.assertEquals(b1.getNumber(), pbpv1.getRun().getNumber()); // rebuild it JenkinsRule.WebClient wc = j.createWebClient(); HtmlPage page = wc.getPage(b2, "rebuild"); HtmlForm form = page.getFormByName("config"); j.submit(form); j.waitUntilNoActivity(); // validate presence of parameter FreeStyleBuild rebuild = p2.getLastBuild(); j.assertBuildStatusSuccess(rebuild); Assert.assertNotEquals(b2.getNumber(), rebuild.getNumber()); ParametersAction a2 = rebuild.getAction(ParametersAction.class); Assert.assertNotNull(a2); Assert.assertFalse(a2.getParameters().isEmpty()); ParameterValue v2 = a2.getParameter("var"); Assert.assertTrue(v2 instanceof PromotedBuildParameterValue); PromotedBuildParameterValue pbpv2 = (PromotedBuildParameterValue) v2; Assert.assertEquals(b1.getNumber(), pbpv2.getRun().getNumber()); }
/** Gets all the promotion builds. */ public List<Promotion> getPromotionBuilds() { PromotionProcess p = getProcess(); List<Promotion> builds = new ArrayList<Promotion>(); for (Integer n : Iterators.reverse(promotionAttempts)) { Promotion b = p.getBuildByNumber(n); if (b != null) { builds.add(b); } } return builds; }
public boolean isFor(PromotionProcess process) { return process.getName().equals(this.name); }
public Status(PromotionProcess process, Collection<? extends PromotionBadge> badges) { this.name = process.getName(); this.badges = badges.toArray(new PromotionBadge[badges.size()]); }
/** Returns true if the promotion for this is pending in the queue, waiting to be executed. */ public boolean isInQueue() { PromotionProcess p = getProcess(); return p != null && p.isInQueue(getTarget()); }