Replace Jenkins Git plugin checkout with a plain shell clone + retry loop
The Git plugin's checkout([...]) step doesn't expose http.postBuffer/ http.version tuning, which is what's reliably fixed every stuck push/clone today (VPS and both laptops) — meanwhile checkout was failing ~10 times in a row, consistently dying at 84-95% during the shallow clone (early EOF / invalid index-pack). Bypasses the plugin entirely: a plain `git clone` with those settings applied, wrapped in its own 8-attempt bash retry loop, using the existing dd13f593-06b1-4a5a-9477-2df0d186b490 credential (confirmed via credentials.xml to be a UsernamePasswordCredentialsImpl, compatible with the usernamePassword binding as-is). Code now lands in a repo/ subdirectory instead of the workspace root, so every stage referencing a repo-relative path was updated to match: - Build Docker Image: ./platform/ -> ./repo/platform/ - SonarQube Analysis: -Dsonar.sources=platform -> -Dsonar.sources=repo/platform Deploy to Kubernetes needed no changes — it only references the already-built image tag and hardcoded kubectl args, no filesystem paths into the checkout. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
35
platform/Jenkinsfile
vendored
35
platform/Jenkinsfile
vendored
@@ -14,19 +14,24 @@ pipeline {
|
|||||||
stages {
|
stages {
|
||||||
stage('Checkout') {
|
stage('Checkout') {
|
||||||
steps {
|
steps {
|
||||||
retry(5) {
|
withCredentials([usernamePassword(
|
||||||
checkout([
|
credentialsId: 'dd13f593-06b1-4a5a-9477-2df0d186b490',
|
||||||
$class: 'GitSCM',
|
usernameVariable: 'GIT_USER',
|
||||||
branches: scm.branches,
|
passwordVariable: 'GIT_TOKEN'
|
||||||
userRemoteConfigs: scm.userRemoteConfigs,
|
)]) {
|
||||||
extensions: [[
|
sh '''
|
||||||
$class: 'CloneOption',
|
rm -rf repo
|
||||||
shallow: true,
|
for i in 1 2 3 4 5 6 7 8; do
|
||||||
depth: 1,
|
echo "Clone attempt $i..."
|
||||||
noTags: true,
|
git -c http.postBuffer=524288000 -c http.version=HTTP/1.1 \
|
||||||
timeout: 30
|
clone --depth 1 \
|
||||||
]]
|
"https://$GIT_USER:$GIT_TOKEN@gitea.nav.ovh/ameniboukattaya/CloudOps.git" repo \
|
||||||
])
|
&& break
|
||||||
|
rm -rf repo
|
||||||
|
sleep 3
|
||||||
|
done
|
||||||
|
test -d repo/.git
|
||||||
|
'''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -34,7 +39,7 @@ pipeline {
|
|||||||
stage('Build Docker Image') {
|
stage('Build Docker Image') {
|
||||||
steps {
|
steps {
|
||||||
sh '''
|
sh '''
|
||||||
docker build -t management-platform:${BUILD_NUMBER} -t management-platform:latest ./platform/
|
docker build -t management-platform:${BUILD_NUMBER} -t management-platform:latest ./repo/platform/
|
||||||
echo "✅ Docker image built"
|
echo "✅ Docker image built"
|
||||||
docker images management-platform:${BUILD_NUMBER} --format "Size: {{.Size}}"
|
docker images management-platform:${BUILD_NUMBER} --format "Size: {{.Size}}"
|
||||||
'''
|
'''
|
||||||
@@ -50,7 +55,7 @@ pipeline {
|
|||||||
sh """
|
sh """
|
||||||
${scannerHome}/bin/sonar-scanner \
|
${scannerHome}/bin/sonar-scanner \
|
||||||
-Dsonar.projectKey=management-platform \
|
-Dsonar.projectKey=management-platform \
|
||||||
-Dsonar.sources=platform \
|
-Dsonar.sources=repo/platform \
|
||||||
-Dsonar.python.version=3
|
-Dsonar.python.version=3
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user