diff --git a/project2/jenkinsfile b/project2/jenkinsfile index 63032a9..855f3ff 100644 --- a/project2/jenkinsfile +++ b/project2/jenkinsfile @@ -18,7 +18,6 @@ pipeline { steps { script { dir('project2') { - // Curățăm preventiv containerul dacă a rămas blocat de la un build anterior sh "docker rm -f quotes-worker || true" try { sh "docker run --name quotes-worker --dns 8.8.8.8 quotes-app" @@ -42,23 +41,29 @@ pipeline { def quoteText = "Nu am putut citi fișierul." if (fileExists('project2/quote.txt')) { quoteText = readFile('project2/quote.txt').trim() + + // CURĂȚARE TEXT: Prevenim stricarea JSON-ului manual + quoteText = quoteText.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') } def resultStatus = currentBuild.result ?: 'SUCCESS' def statusEmoji = (resultStatus == 'SUCCESS') ? "✅" : "⚠️" - - echo "🚀 Trimitere notificare către Discord..." + def buildHeader = "${statusEmoji} **Pipeline Finalizat (Build #${env.BUILD_NUMBER})**" - // Creăm un fișier JSON temporar pentru a evita problemele de shell - def payload = [ - content: "${statusEmoji} **Pipeline Finalizat (Build #${env.BUILD_NUMBER})**\n\n${quoteText}" - ] - - // Scriem payload-ul într-un fișier discord_payload.json - writeJSON file: 'discord_payload.json', json: payload + echo "🚀 Generăm payload-ul și trimitem către Discord..." - // Trimitem fișierul folosind @ la curl - asta e metoda cea mai sigură! - sh "curl -X POST -H 'Content-Type: application/json' -d @discord_payload.json '${discordUrl}'" + // MODIFICARE CRITICĂ: Înlocuim writeJSON cu 'cat' (Linux native) + sh """ + cat << 'EOF' > discord_payload.json +{ + "content": "${buildHeader}\\n\\n${quoteText}" +} +EOF + """ + + // Trimitem fișierul JSON brut către Discord + // Folosim --data-binary pentru a păstra formatarea corectă + sh "curl -X POST -H 'Content-Type: application/json' --data-binary @discord_payload.json '${discordUrl}'" } } }