@Override public void buildEnvironmentFor(@Nonnull Run r, @Nonnull EnvVars envs, @Nonnull TaskListener listener) throws IOException, InterruptedException { GitLabWebHookCause cause = null; if (r instanceof MatrixRun) { MatrixBuild parent = ((MatrixRun)r).getParentBuild(); if (parent != null) { cause = (GitLabWebHookCause) parent.getCause(GitLabWebHookCause.class); } } else { cause = (GitLabWebHookCause) r.getCause(GitLabWebHookCause.class); } if (cause != null) { envs.overrideAll(cause.getData().getBuildVariables()); } } }
/** * matrix-project requires special extraction. */ @CheckForNull public static <T extends Cause> T ghCauseFromRun(Run<?, ?> run, Class<T> tClass) { if (run instanceof MatrixRun) { MatrixBuild parentBuild = ((MatrixRun) run).getParentBuild(); if (nonNull(parentBuild)) { return parentBuild.getCause(tClass); } } else { return run.getCause(tClass); } return null; }
/** * Tests that the builds from the MatrixProject can be loaded. */ @Test @LocalData public void testMatrixBuild() { Item item = j.jenkins.getItem("matrixJob"); assertThat("Item is not a MatrixProject", item, instanceOf(MatrixProject.class)); MatrixProject proj = (MatrixProject)item; RunList<MatrixBuild> builds = proj.getBuilds(); assertNotNull(builds); assertTrue("The build list should not be empty", !builds.isEmpty()); MatrixBuild matrixBuild = proj.getFirstBuild(); assertNotNull(matrixBuild.getAction(RetriggerAction.class)); GerritManualCause cause = matrixBuild.getCause(GerritManualCause.class); assertNotNull(cause); BadgeAction action = matrixBuild.getAction(BadgeAction.class); assertNotNull(action); }