2026-07-09 14:39:17 +08:00
|
|
|
pipeline {
|
|
|
|
|
agent any
|
|
|
|
|
|
|
|
|
|
environment {
|
|
|
|
|
PROD_HOST = '106.54.23.149'
|
|
|
|
|
PROD_USER = 'ubuntu'
|
|
|
|
|
DEPLOY_DIR = '/var/www/docs.xuqinmin.com/site'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
stages {
|
|
|
|
|
stage('Checkout') {
|
|
|
|
|
steps {
|
|
|
|
|
checkout scm
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
stage('Build Docs') {
|
|
|
|
|
steps {
|
2026-07-09 14:56:39 +08:00
|
|
|
powershell '''
|
|
|
|
|
[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
|
|
|
|
$env:PYTHONIOENCODING = 'utf-8'
|
|
|
|
|
$env:PYTHONUTF8 = '1'
|
|
|
|
|
pip3 install mkdocs-material --quiet 2>$null || Write-Host 'ok'
|
2026-07-09 14:54:22 +08:00
|
|
|
python -X utf8 -m mkdocs build --clean --site-dir site
|
2026-07-09 14:51:55 +08:00
|
|
|
'''
|
2026-07-09 14:39:17 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
stage('Deploy') {
|
|
|
|
|
steps {
|
|
|
|
|
withCredentials([sshUserPrivateKey(credentialsId: 'PROD_SSH_KEY', keyFileVariable: 'SSH_KEY')]) {
|
|
|
|
|
bat '''
|
2026-07-09 15:40:33 +08:00
|
|
|
cd site
|
|
|
|
|
tar -czf ../site.tar.gz *
|
2026-07-09 14:43:23 +08:00
|
|
|
ssh -i %SSH_KEY% -o StrictHostKeyChecking=no -o ConnectTimeout=30 %PROD_USER%@%PROD_HOST% "mkdir -p %DEPLOY_DIR% && sudo rm -rf %DEPLOY_DIR%/* && sudo chown -R %PROD_USER%:%PROD_USER% %DEPLOY_DIR%"
|
2026-07-09 15:40:33 +08:00
|
|
|
scp -i %SSH_KEY% -o StrictHostKeyChecking=no -o ConnectTimeout=30 ../site.tar.gz %PROD_USER%@%PROD_HOST%:%DEPLOY_DIR%/
|
|
|
|
|
ssh -i %SSH_KEY% -o StrictHostKeyChecking=no -o ConnectTimeout=30 %PROD_USER%@%PROD_HOST% "cd %DEPLOY_DIR% && tar -xzf site.tar.gz && rm -f site.tar.gz"
|
2026-07-09 14:39:17 +08:00
|
|
|
'''
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
post {
|
|
|
|
|
success {
|
|
|
|
|
echo 'Docs deployed: https://docs.xuqinmin.com/'
|
|
|
|
|
}
|
|
|
|
|
failure {
|
|
|
|
|
echo 'Docs deployment failed!'
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|