canguidev/Jenkinsfile

59 lines
2.3 KiB
Groovy

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é.'
}
}
}
}