Added an environment variable for maximum retries and a script to handle npm install with fallback to npm ci and retry mechanisms using --legacy-peer-deps and --force options. This might fix npm sucking.
64 lines
2.2 KiB
Groovy
64 lines
2.2 KiB
Groovy
pipeline {
|
|
agent any
|
|
environment {
|
|
MAX_RETRIES = 5
|
|
}
|
|
stages {
|
|
stage('Gradle') {
|
|
steps {
|
|
script {
|
|
def retryCount = 0
|
|
def success = false
|
|
|
|
// Clean npm cache and try normal install and npm ci once
|
|
sh 'npm cache clean --force'
|
|
try {
|
|
sh 'npm install'
|
|
success = true
|
|
} catch (Exception e1) {
|
|
echo "npm install failed, trying npm ci..."
|
|
try {
|
|
sh 'npm ci'
|
|
success = true
|
|
} catch (Exception e2) {
|
|
echo "npm ci failed, proceeding to retry with --legacy-peer-deps and --force..."
|
|
}
|
|
}
|
|
|
|
// Retry with --legacy-peer-deps and --force if necessary
|
|
while (retryCount < MAX_RETRIES.toInteger() && !success) {
|
|
try {
|
|
sh 'npm install --legacy-peer-deps'
|
|
success = true
|
|
} catch (Exception e3) {
|
|
try {
|
|
sh 'npm install --force'
|
|
success = true
|
|
} catch (Exception e4) {
|
|
retryCount++
|
|
echo "Retry ${retryCount}/${MAX_RETRIES} failed"
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!success) {
|
|
error "Failed to install dependencies after ${MAX_RETRIES} attempts"
|
|
}
|
|
|
|
sh 'npm run build'
|
|
}
|
|
}
|
|
}
|
|
stage('Archive') {
|
|
steps {
|
|
archiveArtifacts artifacts: 'build/**', followSymlinks: false
|
|
}
|
|
}
|
|
stage('discord') {
|
|
steps {
|
|
discordSend description: "Build: ${BUILD_NUMBER}", showChangeset: true, result: currentBuild.currentResult, title: currentBuild.fullProjectName, webhookURL: env.discordwebhook
|
|
}
|
|
}
|
|
}
|
|
}
|