Updates the Jenkinsfile to ensure proper JSON formatting for the list of artifact URLs passed to the CI notification service. This ensures that the recipient correctly interprets the download links.
122 lines
4.3 KiB
Groovy
122 lines
4.3 KiB
Groovy
pipeline {
|
|
agent { label 'windows' }
|
|
|
|
parameters {
|
|
string(name: 'DISCORD_USER_ID', defaultValue: '378262266723696651', description: 'ID Discord pour recevoir le DM')
|
|
choice(name: 'BUILD_TYPE', choices: ['Both', 'Debug', 'Release'], description: 'Type de build à exécuter')
|
|
}
|
|
|
|
options {
|
|
timestamps()
|
|
disableConcurrentBuilds()
|
|
timeout(time: 30, unit: 'MINUTES')
|
|
}
|
|
|
|
triggers {
|
|
pollSCM('')
|
|
}
|
|
|
|
stages {
|
|
stage('Checkout') {
|
|
steps {
|
|
checkout scm
|
|
}
|
|
}
|
|
|
|
stage('Build') {
|
|
parallel {
|
|
stage('Build Debug') {
|
|
when { expression { params.BUILD_TYPE in ['Both', 'Debug'] } }
|
|
steps {
|
|
echo 'Building Debug...'
|
|
bat """
|
|
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Current\\Bin\\MSBuild.exe" ^
|
|
"%WORKSPACE%\\KhaoticEngineReborn.sln" ^
|
|
/p:Configuration=Debug ^
|
|
/p:Platform=x64 ^
|
|
/m ^
|
|
/verbosity:minimal
|
|
"""
|
|
}
|
|
}
|
|
stage('Build Release') {
|
|
when { expression { params.BUILD_TYPE in ['Both', 'Release'] } }
|
|
steps {
|
|
echo 'Building Release...'
|
|
bat """
|
|
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Current\\Bin\\MSBuild.exe" ^
|
|
"%WORKSPACE%\\KhaoticEngineReborn.sln" ^
|
|
/p:Configuration=Release ^
|
|
/p:Platform=x64 ^
|
|
/m ^
|
|
/verbosity:minimal
|
|
"""
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Package') {
|
|
parallel {
|
|
stage('Package Debug') {
|
|
when { expression { params.BUILD_TYPE in ['Both', 'Debug'] } }
|
|
steps {
|
|
echo 'Packaging Debug into ZIP'
|
|
bat 'if not exist "%WORKSPACE%\\builds" mkdir "%WORKSPACE%\\builds"'
|
|
bat """
|
|
powershell -Command "Compress-Archive -Path '%WORKSPACE%\\**\\Debug\\*' -DestinationPath '%WORKSPACE%\\builds\\KhaoticEngineReborn_Debug.zip' -Force"
|
|
"""
|
|
}
|
|
}
|
|
stage('Package Release') {
|
|
when { expression { params.BUILD_TYPE in ['Both', 'Release'] } }
|
|
steps {
|
|
echo 'Packaging Release into ZIP'
|
|
bat 'if not exist "%WORKSPACE%\\builds" mkdir "%WORKSPACE%\\builds"'
|
|
bat """
|
|
powershell -Command "Compress-Archive -Path '%WORKSPACE%\\**\\Release\\*' -DestinationPath '%WORKSPACE%\\builds\\KhaoticEngineReborn_Release.zip' -Force"
|
|
"""
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Archive Artifacts') {
|
|
steps {
|
|
archiveArtifacts artifacts: 'builds/*.zip', fingerprint: true
|
|
}
|
|
}
|
|
}
|
|
|
|
post {
|
|
success {
|
|
script {
|
|
def urlsList = []
|
|
if (params.BUILD_TYPE in ['Both', 'Debug']) {
|
|
urlsList << "${env.BUILD_URL}artifact/builds/KhaoticEngineReborn_Debug.zip"
|
|
}
|
|
if (params.BUILD_TYPE in ['Both', 'Release']) {
|
|
urlsList << "${env.BUILD_URL}artifact/builds/KhaoticEngineReborn_Release.zip"
|
|
}
|
|
// Convertir en une chaîne JSON valide d'URLs
|
|
def urlsJson = urlsList.collect { "\"${it}\"" }.join(',')
|
|
urlsJson = "[${urlsJson}]"
|
|
|
|
bat """
|
|
curl -X POST http://192.168.1.131:2500/ci-notify ^
|
|
-H "Content-Type: application/json" ^
|
|
-d "{\\"userId\\":\\"${params.DISCORD_USER_ID}\\",\\"status\\":\\"success\\",\\"urls\\":${urlsJson}}"
|
|
"""
|
|
}
|
|
}
|
|
failure {
|
|
script {
|
|
bat """
|
|
curl -X POST http://192.168.1.131:2500/ci-notify ^
|
|
-H "Content-Type: application/json" ^
|
|
-d "{\\"userId\\":\\"${params.DISCORD_USER_ID}\\",\\"status\\":\\"failure\\",\\"urls\\":[]}"
|
|
"""
|
|
}
|
|
}
|
|
}
|
|
} |