-
Bug
-
Resolution: Unresolved
-
Major
-
None
Problem
I have a huge repository (~500MB) with many branches (~30) with each containing a Jenkinsfile. The first indexing is quite painful.
Jenkins will detect all branches, and trigger a build for each one. Each build will start by cloning the git repository on the master to fetch the Jenkinsfile. But this tasks will not use/require a free executor on the master. So, the 30 git clone will be launched at the same time, trying to download 30 times the same 500MB repository. It will end with a really slow Jenkins and a timeout.
I'll have to manually relaunch every branch, one or two at a time to fix this problem.
Possible solution
Is it possible to use an executor on the master during the checkout ? To throttle the git clones ?
How to reproduce it
- Create a git repository
- Create a Jenkinsfile with something in it (echo 'hello world')
- Add a huge file (an ISO of your favorite Linux distribution or something else)
- Commit it
- Create 30 branches
- Add this project in your Jenkins as a Multibranch Pipeline.
- duplicates
-
JENKINS-33273 Optimize Jenkinsfile loading and branch detection
-
- Resolved
-
[JENKINS-37345] Throttle automatic git checkout to prevent timeouts/overload on first indexing
Description |
Original:
h2. Problem I have a huge repository (~500MB) with many branches (~30) with each containing a Jenkinsfile. The first indexing is quite painful. Jenkins will detect all branches, and trigger a build for each one. Each build will start by cloning the git repository on the master to fetch the Jenkinsfile. But this tasks will not use/require a free executor on the master. So, the 30 git clone will be launched at the same time, trying to download 30 times the same 500MB repository. It will end with a really slow Jenkins and a timeout. I'll have to manually relaunch every branch, one or two at a time to fix this problem. h2. Possible solution Is it possible to use an executor on the master during the checkout ? To throttle the git clones ? h2. How to reproduce it |
New:
h2. Problem I have a huge repository (~500MB) with many branches (~30) with each containing a Jenkinsfile. The first indexing is quite painful. Jenkins will detect all branches, and trigger a build for each one. Each build will start by cloning the git repository on the master to fetch the Jenkinsfile. But this tasks will not use/require a free executor on the master. So, the 30 git clone will be launched at the same time, trying to download 30 times the same 500MB repository. It will end with a really slow Jenkins and a timeout. I'll have to manually relaunch every branch, one or two at a time to fix this problem. h2. Possible solution Is it possible to use an executor on the master during the checkout ? To throttle the git clones ? h2. How to reproduce it * Create a git repository * Create a Jenkinsfile with something in it (echo 'hello world') * Add a huge file (an ISO of your favorite Linux distribution or something else) * Commit it * Create 30 branches * Add this project in your Jenkins as a Multibranch Pipeline. |
Summary | Original: Throttle automatic git checkout | New: Throttle automatic git checkout to prevent timeouts/overload on first indexing |
Link |
New:
This issue duplicates |
Assignee | Original: Manuel Recena Soto [ recena ] | |
Resolution | New: Duplicate [ 3 ] | |
Status | Original: Open [ 1 ] | New: Resolved [ 5 ] |
Resolution | Original: Duplicate [ 3 ] | |
Status | Original: Resolved [ 5 ] | New: Reopened [ 4 ] |
Priority | Original: Minor [ 4 ] | New: Major [ 3 ] |
Actually IMO it's wrong to clone the same git repository 30 times and it is wrong to trigger any builds at all.
IMO for git a single bare clone per repo URL (across all jobs) should suffice.
And triggering a build only after the next change after initial indexing should be a must.
I definitely vote for improved behavior on first branch indexing.