ci: 改用本地文件路径,避免网络超时
这个提交包含在:
父节点
ec393be484
当前提交
a59a71f199
71
Jenkinsfile
vendored
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 配置中已定义的 SCM(CpsScmFlowDefinition),
|
||||
// 这里显式 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!'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
正在加载...
在新工单中引用
屏蔽一个用户