Jenkins en Pelican
Gepubliceerd op
Categorie: misc
Mijn nieuwe blog is gemaakt met Pelican, een Statische site generator. Elke keer mijn site manueel uploaden is irritant dus heb ik Jenkins opgezet om automatisch mijn site te bouwen en te uploaden.
Dit lukt met de volgende Jenkinsfile:
pipeline {
agent any
environment {
REMOTE_USER = 'vincent'
REMOTE_HOST = 'rpi5.local'
REMOTE_DIR = '/home/vincent/public_html/blog.vincentlammens.be/'
OUTPUT_DIR = 'output'
SSH_CRED_ID = 'ssh-rpi5-jenkins'
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Prepare Environment') {
steps {
sh '''
if [ ! -d ".venv" ]; then
python3 -m venv .venv
fi
. .venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
'''
}
}
stage('Build Site') {
steps {
sh '''
. .venv/bin/activate
make publish
'''
}
}
stage('Deploy (rsync)') {
steps {
// We halen de private key op als een tijdelijk bestand
withCredentials([sshUserPrivateKey(credentialsId: "${SSH_CRED_ID}", keyFileVariable: 'SSH_KEY')]) {
sh '''
rsync -avz --delete \
-e "ssh -i ${SSH_KEY} -o StrictHostKeyChecking=no" \
${OUTPUT_DIR}/ ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}
'''
}
}
}
}
post {
success {
emailext(
to: 'vincent@vincentlammens.be',
subject: "SUCCESS: ${env.JOB_NAME} has been built successfully!",
body: """Build succeeded.
Job: ${env.JOB_NAME}
Build: #${env.BUILD_NUMBER}
URL: ${env.BUILD_URL}
"""
)
}
}
}
