Skip to content

Commit 58ed8c3

Browse files
v1vtimja
authored andcommitted
Demos: run integration tests for the Kubernetes example
1 parent a9081fb commit 58ed8c3

File tree

4 files changed

+67
-80
lines changed

4 files changed

+67
-80
lines changed

demos/kubernetes/README.md

Lines changed: 48 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,46 +4,62 @@ Jenkins can be installed in Kubernetes and preconfigured to run jobs (and other
44
options) in the Kubernetes cluster, using YAML stored in a `ConfigMap`.
55
See [config.yml](config.yml) for the `ConfigMap` definition.
66

7-
Example installation on Kubernetes:
8-
9-
```bash
10-
kubectl apply -f service-account.yml
11-
kubectl apply -f config.yml
12-
kubectl apply -f jenkins.yml
13-
```
14-
15-
## Sample configuration
7+
## Advanced sample configuration
168

179
```yaml
18-
jenkins:
10+
unclassified:
1911
location:
2012
url: http://jenkins/
21-
clouds:
22-
- kubernetes:
23-
name: kubernetes
24-
containerCapStr: 100
25-
```
26-
27-
## Advanced sample configuration
2813

29-
```yaml
3014
jenkins:
31-
location:
32-
url: http://jenkins/
3315
clouds:
3416
- kubernetes:
3517
name: "advanced-k8s-config"
3618
serverUrl: "https://avanced-k8s-config:443"
19+
serverCertificate: "serverCertificate"
3720
skipTlsVerify: true
38-
namespace: "default"
3921
credentialsId: "advanced-k8s-credentials"
22+
namespace: "default"
4023
jenkinsUrl: "http://jenkins/"
41-
connectTimeout: 0
42-
readTimeout: 0
43-
containerCapStr: 100
24+
jenkinsTunnel: "jenkinsTunnel"
25+
containerCapStr: 42
4426
maxRequestsPerHostStr: 64
4527
retentionTimeout: 5
28+
connectTimeout: 10
29+
readTimeout: 20
30+
4631
templates:
32+
- name: "test"
33+
serviceAccount: "serviceAccount"
34+
instanceCap: 1234
35+
idleMinutes: 0
36+
label: "label"
37+
volumes:
38+
- hostPathVolume:
39+
mountPath: "mountPath"
40+
hostPath: "hostPath"
41+
42+
containers:
43+
- name: "name"
44+
image: "image"
45+
privileged: true
46+
alwaysPullImage: true
47+
command: "command"
48+
args: "args"
49+
workingDir: "workingDir"
50+
ttyEnabled: true
51+
resourceRequestCpu: "resourceRequestCpu"
52+
resourceRequestMemory: "resourceRequestMemory"
53+
resourceLimitCpu: "resourceLimitCpu"
54+
resourceLimitMemory: "resourceLimitMemory"
55+
imagePullSecrets:
56+
- name: "imagePullSecrets"
57+
58+
envVars:
59+
- envVar:
60+
key: "FOO"
61+
value: "BAR"
62+
4763
- name: "k8s-slave"
4864
namespace: "default"
4965
label: "linux-x86_64"
@@ -66,3 +82,11 @@ jenkins:
6682
activeDeadlineSeconds: "120"
6783
slaveConnectTimeout: "1000"
6884
```
85+
86+
## Example installation on Kubernetes
87+
88+
```bash
89+
kubectl apply -f service-account.yml
90+
kubectl apply -f config.yml
91+
kubectl apply -f jenkins.yml
92+
```

demos/kubernetes/adv_config.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ metadata:
77
name: jenkins-configuration-as-code
88
data:
99
configuration-as-code.yaml: |
10-
jenkins:
10+
unclassified:
1111
location:
1212
url: http://jenkins/
13+
jenkins:
1314
clouds:
1415
- kubernetes:
1516
name: "advanced-k8s-config"

integrations/src/test/java/io/jenkins/plugins/casc/KubernetesCloudTest.java

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package io.jenkins.plugins.casc;
22

3-
import io.jenkins.plugins.casc.misc.ConfiguredWithCode;
4-
import io.jenkins.plugins.casc.misc.JenkinsConfiguredWithCodeRule;
3+
import hudson.model.Node.Mode;
4+
import io.jenkins.plugins.casc.misc.ConfiguredWithReadme;
5+
import io.jenkins.plugins.casc.misc.JenkinsConfiguredWithReadmeRule;
56
import java.util.List;
67
import org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud;
78
import org.csanchez.jenkins.plugins.kubernetes.PodTemplate;
@@ -22,27 +23,29 @@
2223
public class KubernetesCloudTest {
2324

2425
@Rule
25-
public JenkinsConfiguredWithCodeRule j = new JenkinsConfiguredWithCodeRule();
26+
public JenkinsConfiguredWithReadmeRule j = new JenkinsConfiguredWithReadmeRule();
2627

2728
@Test
28-
@ConfiguredWithCode("KubernetesCloudTest.yml")
29+
@ConfiguredWithReadme("kubernetes/README.md")
2930
public void configure_kubernetes_cloud() throws Exception {
3031
final KubernetesCloud cloud = j.jenkins.clouds.get(KubernetesCloud.class);
3132
assertNotNull(cloud);
32-
assertEquals("kubernetes", cloud.name);
33-
assertEquals("serverUrl", cloud.getServerUrl());
33+
assertEquals("advanced-k8s-config", cloud.name);
34+
assertEquals("https://avanced-k8s-config:443", cloud.getServerUrl());
3435
assertEquals("serverCertificate", cloud.getServerCertificate());
3536
assertTrue(cloud.isSkipTlsVerify());
36-
assertEquals("namespace", cloud.getNamespace());
37-
assertEquals("jenkinsUrl", cloud.getJenkinsUrl());
37+
assertEquals("default", cloud.getNamespace());
38+
assertEquals("http://jenkins/", cloud.getJenkinsUrl());
39+
assertEquals("advanced-k8s-credentials", cloud.getCredentialsId());
3840
assertEquals("jenkinsTunnel", cloud.getJenkinsTunnel());
3941
assertEquals(42, cloud.getContainerCap());
4042
assertEquals(5, cloud.getRetentionTimeout());
4143
assertEquals(10, cloud.getConnectTimeout());
4244
assertEquals(20, cloud.getReadTimeout());
45+
assertEquals("64", cloud.getMaxRequestsPerHostStr());
4346

4447
final List<PodTemplate> templates = cloud.getTemplates();
45-
assertEquals(1, templates.size());
48+
assertEquals(2, templates.size());
4649
final PodTemplate template = templates.get(0);
4750
assertEquals("test", template.getName());
4851
assertEquals("serviceAccount", template.getServiceAccount());
@@ -61,6 +64,11 @@ public void configure_kubernetes_cloud() throws Exception {
6164
final KeyValueEnvVar envVar = (KeyValueEnvVar) envVars.get(0);
6265
assertEquals("FOO", envVar.getKey());
6366
assertEquals("BAR", envVar.getValue());
67+
68+
final PodTemplate template1 = templates.get(1);
69+
assertEquals("k8s-slave", template1.getName());
70+
assertEquals("default", template1.getNamespace());
71+
assertEquals(Mode.EXCLUSIVE, template1.getNodeUsageMode());
6472
}
6573
}
6674

integrations/src/test/resources/io/jenkins/plugins/casc/KubernetesCloudTest.yml

Lines changed: 0 additions & 46 deletions
This file was deleted.

0 commit comments

Comments
 (0)