About JENKINS_AGENT_WORKDIR persistence in jenkins/inbound-agent

Hello, everybody.

Thanks for reading my post.

I used kubernetes{} plugin to dynamically generate jenkins agent pod and complete a series of tasks

What happens is that when Pod starts, it will generate caches, workspace, remoting, and so on in /home/jenkins/agent/. I now want to persist this directory to an NFS volume. When I mount the NFS volume to the /home/jencs/agent directory, the directory ends up empty and subsequent stage tasks fail.

I observed later that when Pod started, it generated a number of directories and files in /home/jenkins/agent, and /home/jenkins/agent was overwritten when I mounted the NFS volume there

I want to mount the NFS volume into /home/jenkins/agent directory when pod starts so that all the generated files end up in the NFS volume. Is there anything you can recommend

I used an NFS volume because I wanted to share the caches and workspace directories in /home/jenkins/agent so I could use them later

The pipeline script is as follows:

pipeline {
    agent {
        kubernetes {
          cloud 'k8s'
          defaultContainer 'jenkins-inbound-agent-maven-latest-jdk21'
          retries 2
          yaml """
---
apiVersion: v1
kind: Pod
metadata:
  labels:
    jenkins-slave-pod-name: ${JENKINS_SLAVE_POD_LABEL}
    jenkins-job-info: ${env.JOB_NAME}.${env.BUILD_NUMBER}
  namespace: devops
spec:
  securityContext:
    runAsUser: 1000
    runAsGroup: 1000
    fsGroup: 1000
  hostAliases:
    - ip: "192.168.110.208"
      hostnames:
        - "reg.zxactions.com"
  containers:
  - name: jenkins-inbound-agent-maven-latest-jdk21
    image: jenkins/inbound-agent:latest-jdk21
    imagePullPolicy: Always
    ttyEnabled: false
    command:
      - sleep
    args:
      - infinity
    volumeMounts:
      - name: maven-cache
        mountPath: /home/jenkins/.m2
        readOnly: false
      - name: agent-dir-path
        mountPath: /home/jenkins/agent
        readOnly: false
  volumes:
    - name: maven-cache
      persistentVolumeClaim:
        claimName: nfs-pvc-local-claim-01
    - name: agent-dir-path
      nfs:
        server: 192.168.110.220
        path: /nfs-data/jenkins-slave-agent/
        options: "nfsvers=4.2,rsize=1048576,wsize=1048576,noatime,nodiratime,tcp,hard,intr"
          """
        }
    }

    stages {
        stage('拉取代码') {
          steps {
            retry(count: 2, conditions: [kubernetesAgent(), nonresumable()]) {
              container('jenkins-inbound-agent-maven-latest-jdk21') {
                sh '''
                echo 'hello' && hostname && pwd && ls $(pwd) && ls /home/jenkins/agent/workspace
                '''
              }
            }
          }  
        }
    }
}