Previously, the Discord notification was sent for all branches. Now, the notification will only be sent for builds on the 'main' or 'master' branches, reducing unnecessary notifications.
68 lines
2.3 KiB
Groovy
68 lines
2.3 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') {
|
|
when {
|
|
branch 'main'
|
|
branch 'master'
|
|
}
|
|
steps {
|
|
discordSend description: "Build: ${BUILD_NUMBER}", showChangeset: true, result: currentBuild.currentResult, title: currentBuild.fullProjectName, webhookURL: env.discordwebhook
|
|
}
|
|
}
|
|
}
|
|
}
|