Pipeline on agent creates always 2 workspace folders like "workspace/workspace"

Jenkins setup:

Jenkins: 2.462.2
OS: Linux - 6.8.0-38-generic
Java: 17.0.12 - Ubuntu (OpenJDK 64-Bit Server VM)
---
ant:511.v0a_a_1a_334f41b_
antisamy-markup-formatter:162.v0e6ec0fcfcf6
apache-httpcomponents-client-4-api:4.5.14-208.v438351942757
asm-api:9.7-33.v4d23ef79fcc8
bootstrap5-api:5.3.3-1
bouncycastle-api:2.30.1.78.1-248.ve27176eb_46cb_
branch-api:2.1178.v969d9eb_c728e
build-timeout:1.33
caffeine-api:3.1.8-133.v17b_1ff2e0599
checks-api:2.2.1
cloudbees-folder:6.951.v5f91d88d76b_b_
commons-lang3-api:3.17.0-84.vb_b_938040b_078
commons-text-api:1.12.0-129.v99a_50df237f7
credentials:1378.v81ef4269d764
credentials-binding:681.vf91669a_32e45
dark-theme:479.v661b_1b_911c01
display-url-api:2.204.vf6fddd8a_8b_e9
durable-task:577.v2a_8a_4b_7c0247
echarts-api:5.5.1-1
eddsa-api:0.3.0-4.v84c6f0f4969e
email-ext:1814.v404722f34263
font-awesome-api:6.6.0-2
git:5.5.1
git-client:5.0.0
github:1.40.0
github-api:1.321-468.v6a_9f5f2d5a_7e
github-branch-source:1797.v86fdb_4d57d43
gradle:2.13
gson-api:2.11.0-41.v019fcf6125dc
instance-identity:185.v303dc7c645f9
ionicons-api:74.v93d5eb_813d5f
jackson2-api:2.17.0-379.v02de8ec9f64c
jakarta-activation-api:2.1.3-1
jakarta-mail-api:2.1.3-1
javax-activation-api:1.2.0-7
jaxb:2.3.9-1
jjwt-api:0.11.5-112.ve82dfb_224b_a_d
joda-time-api:2.13.0-85.vb_64d1c2921f1
jquery3-api:3.7.1-2
json-api:20240303-41.v94e11e6de726
json-path-api:2.9.0-58.v62e3e85b_a_655
junit:1300.v03d9d8a_cf1fb_
ldap:725.v3cb_b_711b_1a_ef
mailer:472.vf7c289a_4b_420
matrix-auth:3.2.2
matrix-project:832.va_66e270d2946
metrics:4.2.21-451.vd51df8df52ec
mina-sshd-api-common:2.13.2-125.v200281b_61d59
mina-sshd-api-core:2.13.2-125.v200281b_61d59
okhttp-api:4.11.0-172.vda_da_1feeb_c6e
pam-auth:1.11
pipeline-build-step:540.vb_e8849e1a_b_d8
pipeline-github-lib:61.v629f2cc41d83
pipeline-graph-analysis:216.vfd8b_ece330ca_
pipeline-graph-view:340.v28cecee8b_25f
pipeline-groovy-lib:730.ve57b_34648c63
pipeline-input-step:495.ve9c153f6067b_
pipeline-milestone-step:119.vdfdc43fc3b_9a_
pipeline-model-api:2.2214.vb_b_34b_2ea_9b_83
pipeline-model-definition:2.2214.vb_b_34b_2ea_9b_83
pipeline-model-extensions:2.2214.vb_b_34b_2ea_9b_83
pipeline-stage-step:312.v8cd10304c27a_
pipeline-stage-tags-metadata:2.2214.vb_b_34b_2ea_9b_83
plain-credentials:183.va_de8f1dd5a_2b_
plugin-util-api:5.1.0
resource-disposer:0.23
robot:4.0.0
scm-api:696.v778d637b_a_762
script-security:1362.v67dc1f0e1b_b_3
snakeyaml-api:2.3-123.v13484c65210a_
ssh-credentials:343.v884f71d78167
ssh-slaves:2.973.v0fa_8c0dea_f9f
structs:338.v848422169819
theme-manager:262.vc57ee4a_eda_5d
timestamper:1.27
token-macro:400.v35420b_922dcb_
trilead-api:2.147.vb_73cc728a_32e
variant:60.v7290fc0eb_b_cd
workflow-aggregator:600.vb_57cdd26fdd7
workflow-api:1336.vee415d95c521
workflow-basic-steps:1058.vcb_fc1e3a_21a_9
workflow-cps:3964.v0767b_4b_a_0b_fa_
workflow-durable-task-step:1371.vb_7cec8f3b_95e
workflow-job:1436.vfa_244484591f
workflow-multibranch:795.ve0cb_1f45ca_9a_
workflow-scm-step:427.v4ca_6512e7df1
workflow-step-api:678.v3ee58b_469476
workflow-support:926.v9f4f9b_b_98c19
ws-cleanup:0.46

Hi,

everytime I run my pipeline it creates 2 workspace folders like /var/lib/jenkins/workspace/workspace/pipe4. But this happens only if I run the pipeline on an agent. If I run the same pipeline on controller I have, like it should be, only one workspace folder and everything works fine.

Settings are right and home directory is “/var/lib/jenkins” (Linux system). In pipeline code there is also no second workplace folder mentioned.

Hope someone could help me, unfortunately don’t get it.

How is your agent configured?

Do you need a log file? In settings controller will trigger agent (not ssh).

if the agent is static (not a cloud agent), the configured agent root directory (go to configure screen of the agent)
Is this affecting all pipeline jobs that run on that agent or only some of them. If only some it would be good to have a minimal pipeline script that allows to reproduce the problem.

Jenkins home folder on controller and root folder on agent/remote system is both configured as: /var/lib/jenkins

Maybe same path on controller and agent is not a good idea?

Or maybe I should better use workspace flag (but where can I define this or is it already defined when installing jenkins?) instead of something like this:

steps{
       sh 'robot /var/lib/jenkins/workspace/test4/master/test/test4.robot'
}

Maybe thats the mistake?

There is an env variable WORKSPACE that points to the workspace
So you can use

steps{
       sh 'robot $WORKSPACE/test4/master/test/test4.robot'
}
1 Like

Thanks a lot, now it’s solved. Made my day :)!

Another problem is that my pipeline will run this little Robot Framework script on controller without any problems, but on agent I get this error message:

+ robot /var/lib/jenkins/workspace/test4/master/test/test4.robot
/var/lib/jenkins/workspace/test4@tmp/durable-206e1d4a/script.sh.copy: 1: robot: not found

Seems that it creates and takes another temporarily generated folder where it couldn’t find the script or even doesn’t know the robot command. If I try this command on the agent and in this folder on bash it works fine.

Didn’t want to open a new thread, so I thought I add this question also here.

that means that the robot executable is not found in the path. When you test locally do you use the same user as the build agent uses? It might also depend on the way you connect the agent (outbound via ssh or inbound)

Perfect hint. Thanks a lot! I checked it with user check within the pipeline. It’s really a different user, means pipeline uses root.

Any idea how I can force the pipeline to use my jenkins user instead? Btw. pipeline is triggered by controller, no ssh usage.

you said you run on an agent, then how do you connect the agent? Agents can be connected via ssh (outbound agents, Jenkins connects via ssh to the agent and starts the java process there, in the agents config you define as which user you connect) or via websocket/tcp (you connect the agent by starting the java process on the agent directly with parameters)

I’m pretty sure it is using TCP protocol to connect and communicate. Maybe I’ve made a mistake concerning user while I was installing docker?

Edit (the following issue is solved now by myself):
Now I don’t get the agent connected to controller by using the curl command with secret on this agent (node) page. Getting the following error message:

curl: option -name: expected a proper numerical parameter

So unfortunately this issue is still existing and I don’t found a way to solve it yet:

+ robot /var/lib/jenkins/workspace/test4/master/test/test4.robot
/var/lib/jenkins/workspace/test4@tmp/durable-206e1d4a/script.sh.copy: 1: robot: not found

Okay found a solution:

Concerning curl:
I made a mistake and typed in the command in a wrong way. After running the 2 commands one after the other it runs fine.

Concerning robot command and wrong path:
The usage of python3 -m robot x.robot and absolute path solved this issue.

Just for people who will have possibly the same problems in the future.