Skip to content

Commit 3954583

Browse files
authored
Merge pull request #1486 from Vlatombe/container-withMaven-env
2 parents 6ab2953 + fdb014a commit 3954583

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-0
lines changed

src/test/java/org/csanchez/jenkins/plugins/kubernetes/pipeline/ContainerExecDecoratorPipelineTest.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,4 +115,38 @@ public void envVarDollarSignEscaping() throws Exception {
115115
r.assertLogContains("outside container: $string$with$dollars", b);
116116
r.assertLogContains("inside container: $string$with$dollars", b);
117117
}
118+
119+
@Test
120+
public void containerEnvironmentIsHonored() throws Exception {
121+
assertNotNull(createJobThenScheduleRun());
122+
r.waitForCompletion(b);
123+
r.assertLogContains(
124+
"from Groovy outside container: /opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
125+
b);
126+
r.assertLogContains(
127+
"from shell outside container: /opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
128+
b);
129+
r.assertLogContains(
130+
"from Groovy outside container with override: /bar:/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
131+
b);
132+
r.assertLogContains(
133+
"from shell outside container with override: /bar:/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
134+
b);
135+
// When using groovy, the environment relies on the computer's environment.
136+
r.assertLogContains(
137+
"from Groovy inside container: /opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
138+
b);
139+
r.assertLogContains(
140+
"from shell inside container: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", b);
141+
// TODO Using groovy within container, the agent environment is used instead of the container environment.
142+
// r.assertLogContains(
143+
// "from Groovy inside container with override:
144+
// /bar:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
145+
// b);
146+
// TODO Currently fails because env override is applied to the computer's environment instead of the container's
147+
// environment.
148+
// r.assertLogContains(
149+
// "from shell inside container with override:
150+
// /bar:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", b);
151+
}
118152
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
podTemplate(yaml: '''
2+
spec:
3+
containers:
4+
- name: jnlp
5+
image: jenkins/inbound-agent:3192.v713e3b_039fb_e-1
6+
# PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
7+
- name: alpine
8+
image: alpine:3.19.0
9+
# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
10+
command:
11+
- sleep
12+
args:
13+
- infinity
14+
''') {
15+
node(POD_LABEL) {
16+
echo "from Groovy outside container: ${env.PATH}"
17+
sh 'echo "from shell outside container: $PATH"'
18+
withEnv(['PATH+foo=/bar']) {
19+
echo "from Groovy outside container with override: ${env.PATH}"
20+
sh 'echo "from shell outside container with override: $PATH"'
21+
}
22+
container('alpine') {
23+
echo "from Groovy inside container: ${env.PATH}"
24+
sh 'echo "from shell inside container: $PATH"'
25+
withEnv(['PATH+foo=/bar']) {
26+
echo "from Groovy inside container with override: ${env.PATH}"
27+
sh 'echo "from shell inside container with override: $PATH"'
28+
}
29+
}
30+
}
31+
}

0 commit comments

Comments
 (0)