59 lines
2.3 KiB
Groovy
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é.'
|
|
}
|
|
}
|
|
}
|
|
}
|