ci: 改用本地文件路径,避免网络超时

这个提交包含在:
xuqm 2026-07-09 12:17:14 +08:00
父节点 59796e4e77
当前提交 261510e19a

71
Jenkinsfile vendored
查看文件

@ -5,48 +5,39 @@ pipeline {
PROD_HOST = '106.54.23.149'
PROD_USER = 'ubuntu'
DEPLOY_DIR = '/var/www/docs.xuqinmin.com/site'
LOCAL_REPO = 'D:/Projects3/lawless-design'
}
triggers {
// 轮询触发:每 2 分钟检查一次 main 分支是否有更新
// 配合 Gitea webhook 使用,webhook 负责即时触发,pollSCM 作为兜底
// 每 2 分钟检查本地仓库是否有新 commit
pollSCM('H/2 * * * *')
}
options {
timeout(time: 10, unit: 'MINUTES')
timeout(time: 5, unit: 'MINUTES')
disableConcurrentBuilds()
buildDiscarder(logRotator(numToKeepStr: '10'))
}
stages {
stage('Checkout') {
stage('Checkout Local') {
steps {
// 使用 Job 配置中已定义的 SCMCpsScmFlowDefinition
// 这里显式 checkout 确保工作区是最新的
checkout scm
// 使用本地文件路径,完全避免网络超时
checkout([
$class: 'GitSCM',
branches: [[name: '*/main']],
userRemoteConfigs: [[
url: 'file:///D:/Projects3/lawless-design'
]]
])
}
}
stage('Build Docs') {
steps {
sh '''#!/bin/bash
set -e
echo "=== Building MkDocs ==="
# 检查 mkdocs 是否安装
if ! command -v mkdocs &> /dev/null; then
echo "Installing mkdocs-material..."
pip3 install mkdocs-material --quiet
fi
# 构建文档
bat '''
pip3 install mkdocs-material --quiet 2>nul || echo mkdocs already installed
mkdocs build --clean --site-dir site
echo "=== Build completed ==="
echo "Site files:"
ls -la site/ | head -20
echo "Total files: $(find site -type f | wc -l)"
echo Docs built successfully
'''
}
}
@ -54,27 +45,10 @@ pipeline {
stage('Deploy') {
steps {
withCredentials([sshUserPrivateKey(credentialsId: 'PROD_SSH_KEY', keyFileVariable: 'SSH_KEY')]) {
sh '''#!/bin/bash
set -e
echo "=== Deploying to $PROD_HOST ==="
# 确保目标目录存在且权限正确
ssh -i $SSH_KEY -o StrictHostKeyChecking=no -o ConnectTimeout=10 \
$PROD_USER@$PROD_HOST \
"sudo mkdir -p $DEPLOY_DIR && sudo chown -R $PROD_USER:\$USER /var/www/docs.xuqinmin.com"
# 同步文件到服务器(删除旧文件)
rsync -avz --delete \
-e "ssh -i $SSH_KEY -o StrictHostKeyChecking=no -o ConnectTimeout=10" \
site/ $PROD_USER@$PROD_HOST:$DEPLOY_DIR/
# 验证部署
ssh -i $SSH_KEY -o StrictHostKeyChecking=no -o ConnectTimeout=10 \
$PROD_USER@$PROD_HOST \
"ls -la $DEPLOY_DIR/ | head -10"
echo "=== Deployed successfully to https://docs.xuqinmin.com/ ==="
bat '''
set RSYNC_RSH=ssh -i %SSH_KEY% -o StrictHostKeyChecking=no -o ConnectTimeout=30
rsync -avz --delete site/ %PROD_USER%@%PROD_HOST%:%DEPLOY_DIR%/
echo Deployed to https://docs.xuqinmin.com/
'''
}
}
@ -83,13 +57,10 @@ pipeline {
post {
success {
echo '✅ 文档站部署成功: https://docs.xuqinmin.com/'
echo 'Docs site deployed: https://docs.xuqinmin.com/'
}
failure {
echo '❌ 文档站部署失败,请检查日志'
}
always {
echo "Build #${env.BUILD_NUMBER} completed at ${new Date()}"
echo 'Docs deployment failed!'
}
}
}