diff --git a/Jenkinsfile b/Jenkinsfile index 1c649dd..b9e584e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,108 +1,109 @@ pipeline { agent { label 'windows' } - + + // 1. Déclare ici tes paramètres + parameters { + string(name: 'DISCORD_USER_ID', defaultValue: '378262266723696651', description: 'ID Discord pour les DMs') + choice(name: 'BUILD_TYPE', choices: ['Both', 'Debug', 'Release'], description: 'Type de build à lancer') + } + options { timestamps() disableConcurrentBuilds() timeout(time: 30, unit: 'MINUTES') } - + triggers { pollSCM('') } - + stages { stage('Checkout') { steps { checkout scm } } - + stage('Build') { + when { + expression { params.BUILD_TYPE in ['Both','Debug'] } + } 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 - """ + 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 - """ + 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" - """ + 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" - """ + 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 debugUrl = "${env.BUILD_URL}artifact/builds/KhaoticEngineReborn_Debug.zip" - def releaseUrl = "${env.BUILD_URL}artifact/builds/KhaoticEngineReborn_Release.zip" - bat """ - curl -X POST http://192.168.1.131:2500/ci-notify ^ - -H "Content-Type: application/json" ^ - -d "{\\"userId\\": \\"378262266723696651\\",\\"status\\": \\"success\\",\\"urls\\":[\\"${debugUrl}\\",\\"${releaseUrl}\\"]}" - """ - } - } - failure { - script { - bat """ - curl -X POST http://192.168.1.131:2500/ci-notify ^ - -H "Content-Type: application/json" ^ - -d "{\\"userId\\": \\"378262266723696651\\",\\"status\\": \\"failure\\",\\"urls\\":[]}" - """ - } - } - always { - cleanWs(deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true) - } - } + post { + success { + script { + // Liste les URLs selon le type + def urls = [] + if (params.BUILD_TYPE in ['Both','Debug']) { + urls << "${env.BUILD_URL}artifact/builds/KhaoticEngineReborn_Debug.zip" + } + if (params.BUILD_TYPE in ['Both','Release']) { + urls << "${env.BUILD_URL}artifact/builds/KhaoticEngineReborn_Release.zip" + } + // Envoi via ton bot + 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\\":${groovy.json.JsonOutput.toJson(urls)}}" + """ + } + } + 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\\":[]}" + """ + } + } + always { + cleanWs(deleteDirs: true, disableDeferredWipeout: true, notFailBuild: true) + } + } }