pipeline { agent any stages { stage('Build') { steps { echo 'Compilation du code...' // Add your build commands here } } stage('Test') { steps { echo 'Exécution des tests...' // Add your test commands here } } stage('Deploy') { steps { echo 'Déploiement sur Portainer...' // Obtain an authentication token from Portainer withCredentials([usernamePassword(credentialsId: 'portainer-credentials', usernameVariable: 'PORTAINER_USERNAME', passwordVariable: 'PORTAINER_PASSWORD')]) { script { // Create a JSON object for the authentication request def authRequestBody = groovy.json.JsonOutput.toJson([ Username: PORTAINER_USERNAME, Password: PORTAINER_PASSWORD ]) // Send the authentication request without logging sensitive data def response = httpRequest( httpMode: 'POST', contentType: 'APPLICATION_JSON', url: "http://portainer.canguidev.fr/api/auth", requestBody: authRequestBody, consoleLogResponseBody: false // Prevent logging the response body ) def json = readJSON text: response.content env.PORTAINER_TOKEN = json.jwt } } // Deploy the stack on Portainer using the obtained token httpRequest( httpMode: 'PUT', customHeaders: [[name: 'Authorization', value: "Bearer ${env.PORTAINER_TOKEN}"]], url: "http://portainer.canguidev.fr/api/stacks/canguidev/deploy", contentType: 'APPLICATION_JSON', requestBody: '{"Prune": true}', consoleLogResponseBody: false // Prevent logging the response body ) echo 'Déploiement terminé.' } } } }