Details
-
Type:
Improvement
-
Status: Closed (View Workflow)
-
Priority:
Major
-
Resolution: Fixed
-
Component/s: git-plugin
-
Labels:
-
Environment:Jenkins 2.89.3, workflow-job 2.18-SNAPSHOT
-
Similar Issues:
Description
Environment variables are not resolved in 'Advanced clone behaviours' -> 'Path of the reference repo to use during clone' when configuring git reference repository in the Pipeline SCM section.
Steps to reproduce:
- Create pipeline project
- In configure: fill in repository URL, Branch Specifier and Script Path (Jenkinsfile).
- In 'Additional Behaviours' select 'Advanced Clone Behaviours'. Set 'Path of the reference repo to use during clone' to some value depending on an environment variable, e.g. ${HOME}/jenkins/reference/big-git-repo.git
- At URL, create a git repository with Jenkinsfile. Put 'node('master') { checkout scm }' in the Jenkinsfile.
- Run the job. It will report:
Cloning repository ...URL... > git init ... # timeout=10 ERROR: Reference path does not exist: ${HOME}/jenkins/reference/big-git-repo.git
Would be very handy to have this feature. In my case, I want to use the 'checkout scm' shortcut in a pipeline script that runs several builds in parallel on different platforms. So I want to specify where a reference repository exists on a specific node. For instance, on a Windows node I want to put it in D:\jenkins\reference, on a Mac – to /Users/jenkins/reference and, finally, on linux – /home/jenkins/reference. I could set an environment variable ${REFERENCE} to the above values in node configuration and than use it in 'Path of the reference repo to use during clone' as ${REFERENCE}.
Attachments
Issue Links
- relates to
-
JENKINS-44729 Optimize git clones via shared reference repo for multi branch builds of same repository
-
- Open
-
-
JENKINS-65315 Environment variables not resolved in Pipeline SCM -> Advanced sub-modules behaviours -> Path of the reference repo
-
- Open
-
- links to
These are of course better handled via Docker containers or the like if you can manage it.
I did mean to imply that the Jenkinsfile must list actual filesystem paths on each possible node, merely that the program has some way of determining this information on the fly, preferably not involving Jenkins global configuration. That could be an environment variable set on the agent’s account, etc. The point is that the selection and configuration of a reference repo is something under the control of the job maintainer or Jenkins admin, rather than being baked into a plugin.
I do not have to imagine that, it is a daily reality.
In the case of the Jenkins project, in fact we do, but in case you do not, there are various alternatives.