SiteFrontend/Jenkinsfile
Teriuihi 960fc1707b Refactor conditional stage in Jenkinsfile
Updated the 'discord' stage condition to use 'anyOf' for more readable and maintainable branch checks. This change enhances the clarity of branch conditions, ensuring it triggers on either the 'main' or 'master' branches.
2024-08-08 20:38:05 +02:00

70 lines
2.4 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 {
anyOf {
branch 'main'
branch 'master'
}
}
steps {
discordSend description: "Build: ${BUILD_NUMBER}", showChangeset: true, result: currentBuild.currentResult, title: currentBuild.fullProjectName, webhookURL: env.discordwebhook
}
}
}
}