72 lines
2.4 KiB
Groovy
Executable File
72 lines
2.4 KiB
Groovy
Executable File
pipeline {
|
|
agent any
|
|
|
|
environment {
|
|
GITEA_REPO_PATH = "server/reverse-proxy"
|
|
GITEA_API_URL = "https://gitea.lucasroyer.fr/api/v1"
|
|
}
|
|
|
|
stages {
|
|
stage('Check git...') {
|
|
steps {
|
|
checkout scm
|
|
}
|
|
}
|
|
stage('Build') {
|
|
steps {
|
|
echo "Build Caddy with cache plugin..."
|
|
sh "docker compose build --pull"
|
|
}
|
|
}
|
|
stage('Deploy') {
|
|
steps {
|
|
echo "Deploy new reverse proxy..."
|
|
sh "docker compose up -d"
|
|
}
|
|
}
|
|
stage('Check module...') {
|
|
steps {
|
|
script {
|
|
// Ask caddy to list modules
|
|
def modules = sh(script: "docker exec caddy-reverse-proxy caddy list-modules", returnStdout: true)
|
|
if (modules.contains('http.handlers.cache')) {
|
|
echo "Cache module activated"
|
|
} else {
|
|
error "Error : can't find cache module"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
post {
|
|
always {
|
|
script {
|
|
// Fetch the current commit SHA
|
|
def commitSha = sh(script: 'git rev-parse HEAD', returnStdout: true).trim()
|
|
|
|
// Define build status and description based on current result
|
|
def buildState = currentBuild.currentResult == 'SUCCESS' ? 'success' : 'failure'
|
|
def buildDesc = currentBuild.currentResult == 'SUCCESS' ? 'Build successful' : 'Build failed'
|
|
|
|
// Notify Gitea using the API (requires credential in Jenkins)
|
|
withCredentials([string(credentialsId: 'jenkins', variable: 'GITEA_TOKEN')]) {
|
|
sh """
|
|
curl -f -X POST "${GITEA_API_URL}/repos/${GITEA_REPO_PATH}/statuses/${commitSha}" \
|
|
-H "Authorization: token ${GITEA_TOKEN}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"state": "${buildState}", "target_url": "${env.BUILD_URL}", "description": "${buildDesc}", "context": "jenkins-ci"}'
|
|
"""
|
|
}
|
|
}
|
|
echo "Clean unused image..."
|
|
sh "docker image prune -f"
|
|
}
|
|
success {
|
|
echo "Success !"
|
|
}
|
|
failure {
|
|
echo "Failed."
|
|
}
|
|
}
|
|
} |