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 } } } }