NamespaceAction.push(run, namespace); return false;
@Override public boolean start() throws Exception { TaskListener listener = getContext().get(TaskListener.class); NamespaceAction namespaceAction = new NamespaceAction(getContext().get(Run.class)); sessionId = generateSessionId(); namespace = generateNamespaceId(step.getName(), step.getPrefix(), sessionId); client = getKubernetesClient(); isOpenshift = client.isAdaptable(OpenShiftClient.class); configuration = new DefaultConfigurationBuilder() .withNamespace(namespace) .withNamespaceLazyCreateEnabled(step.isNamespaceLazyCreateEnabled()) .withNamespaceDestroyEnabled(step.isNamespaceDestroyEnabled()) .withMasterUrl(client.getMasterUrl()) .build(); StreamLogger logger = new StreamLogger(listener.getLogger()); LabelProvider labelProvider = new MapLabelProvider(step.getLabels()); namespaceService = isOpenshift ? new OpenshiftNamespaceService.ImmutableOpenshiftNamespaceService(client, configuration, labelProvider, logger) : new DefaultNamespaceService.ImmutableNamespaceService(client, configuration, labelProvider, logger); if (!namespaceService.exists(namespace) && configuration.isNamespaceLazyCreateEnabled()) { namespaceService.create(namespace); } namespaceAction.push(namespace); getContext().newBodyInvoker(). withContext(EnvironmentExpander.merge(getContext().get(EnvironmentExpander.class), new NamespaceExpander(namespace))). withCallback(new NamespaceDestructionCallback(namespace, configuration, namespaceService, namespaceAction)). start(); return false; }
@Override public boolean start() throws Exception { TaskListener listener = getContext().get(TaskListener.class); NamespaceAction namespaceAction = new NamespaceAction(getContext().get(Run.class)); sessionId = generateSessionId(); namespace = generateNamespaceId(step.getName(), step.getPrefix(), sessionId); client = getKubernetesClient(); isOpenshift = client.isAdaptable(OpenShiftClient.class); configuration = new DefaultConfigurationBuilder() .withNamespace(namespace) .withNamespaceLazyCreateEnabled(step.isNamespaceLazyCreateEnabled()) .withNamespaceDestroyEnabled(step.isNamespaceDestroyEnabled()) .withMasterUrl(client.getMasterUrl()) .build(); StreamLogger logger = new StreamLogger(listener.getLogger()); LabelProvider labelProvider = new MapLabelProvider(step.getLabels()); namespaceService = isOpenshift ? new OpenshiftNamespaceService.ImmutableOpenshiftNamespaceService(client, configuration, labelProvider, logger) : new DefaultNamespaceService.ImmutableNamespaceService(client, configuration, labelProvider, logger); if (!namespaceService.exists(namespace) && configuration.isNamespaceLazyCreateEnabled()) { namespaceService.create(namespace); } namespaceAction.push(namespace); getContext().newBodyInvoker(). withContext(EnvironmentExpander.merge(getContext().get(EnvironmentExpander.class), new NamespaceExpander(namespace))). withCallback(new NamespaceDestructionCallback(namespace, configuration, namespaceService, namespaceAction)). start(); return false; }
@Test /** * Step namespace should have priority over anything else. */ public void runWithStepOverriddenNamespace() throws Exception { String overriddenNamespace = testingNamespace + "-overridden-namespace"; String stepNamespace = testingNamespace + "-overridden-namespace2"; KubernetesClient client = cloud.connect(); // Run in our own testing namespace if (client.namespaces().withName(stepNamespace).get() == null) { client.namespaces().createOrReplace( new NamespaceBuilder().withNewMetadata().withName(stepNamespace).endMetadata().build()); } WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "stepOverriddenNamespace"); p.setDefinition(new CpsFlowDefinition(loadPipelineScript("runWithStepOverriddenNamespace.groovy") .replace("OVERRIDDEN_NAMESPACE", stepNamespace), true)); WorkflowRun b = p.scheduleBuild2(0).waitForStart(); assertNotNull(b); NamespaceAction.push(b, overriddenNamespace); r.assertBuildStatusSuccess(r.waitForCompletion(b)); r.assertLogContains(stepNamespace, b); }
@Test public void runWithOverriddenNamespace() throws Exception { String overriddenNamespace = testingNamespace + "-overridden-namespace"; KubernetesClient client = cloud.connect(); // Run in our own testing namespace if (client.namespaces().withName(overriddenNamespace).get() == null) { client.namespaces().createOrReplace( new NamespaceBuilder().withNewMetadata().withName(overriddenNamespace).endMetadata().build()); } WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "overriddenNamespace"); p.setDefinition(new CpsFlowDefinition(loadPipelineScript("runWithOverriddenNamespace.groovy"), true)); WorkflowRun b = p.scheduleBuild2(0).waitForStart(); assertNotNull(b); NamespaceAction.push(b, overriddenNamespace); r.assertBuildStatusSuccess(r.waitForCompletion(b)); r.assertLogContains(overriddenNamespace, b); }