Skip to content

将 MkDocs 部署到 Nginx

macOS/Linux

#!/bin/bash
# 获取当前脚本所在目录的绝对路径
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# MkDocs 项目路径
MKDOCS_PROJECT_DIR="$SCRIPT_DIR"
# MkDocs 构建后的站点目录路径
MKDOCS_SITE_DIR="$MKDOCS_PROJECT_DIR/site"
# 远程 Nginx 服务器 SSH 配置
SSH_USER="your_ssh_user"
SSH_HOST="nginx_server_ip"
REMOTE_DEPLOY_PATH="/path/to/nginx/html"
# MkDocs 构建和部署过程
echo "开始 MkDocs 构建..."
cd $MKDOCS_PROJECT_DIR
mkdocs build
if [ $? -eq 0 ]; then
echo "MkDocs 构建成功"
else
echo "MkDocs 构建失败,请检查问题并重试"
exit 1
fi
echo "开始将构建后的站点文件部署到远程服务器..."
# 使用 scp 将构建后的站点文件传输到远程 Nginx 服务器
scp -r $MKDOCS_SITE_DIR $SSH_USER@$SSH_HOST:$REMOTE_DEPLOY_PATH
if [ $? -eq 0 ]; then
echo "站点文件成功部署到远程服务器"
else
echo "站点文件部署失败,请检查问题并重试"
exit 1
fi
echo "部署完成"

Windows

Terminal window
@echo off
REM 设置 MkDocs 项目路径
set MKDOCS_PROJECT_DIR=%~dp0
REM 设置 MkDocs 构建后的站点目录路径
set MKDOCS_SITE_DIR=%MKDOCS_PROJECT_DIR%\site
REM 远程 Nginx 服务器 SSH 配置
set SSH_USER=your_ssh_user
set SSH_HOST=nginx_server_ip
set REMOTE_DEPLOY_PATH=/path/to/nginx/html
echo 开始 MkDocs 构建...
cd %MKDOCS_PROJECT_DIR%
mkdocs build
if %errorlevel% equ 0 (
echo MkDocs 构建成功
) else (
echo MkDocs 构建失败,请检查问题并重试
exit /b 1
)
echo 开始将构建后的站点文件部署到远程服务器...
REM 使用 scp 将构建后的站点文件传输到远程 Nginx 服务器
scp -r %MKDOCS_SITE_DIR% %SSH_USER%@%SSH_HOST%:%REMOTE_DEPLOY_PATH%
if %errorlevel% equ 0 (
echo 站点文件成功部署到远程服务器
) else (
echo 站点文件部署失败,请检查问题并重试
exit /b 1
)
echo 部署完成

Jenkins

pipeline {
agent any
stages {
stage('Build MkDocs Site') {
steps {
script {
// 设置 MkDocs 项目路径
def mkdocsProjectDir = "${WORKSPACE}/docs"
// 设置 MkDocs 构建后的站点目录路径
def mkdocsSiteDir = "${mkdocsProjectDir}/site"
// MkDocs 构建
sh "cd ${mkdocsProjectDir} && mkdocs build"
// 检查构建结果
if (currentBuild.result == 'SUCCESS') {
echo "MkDocs 构建成功"
} else {
error "MkDocs 构建失败"
}
}
}
}
stage('Deploy to Nginx Server') {
steps {
script {
// 远程 Nginx 服务器 SSH 配置
def sshUser = 'your_ssh_user'
def sshHost = 'nginx_server_ip'
def remoteDeployPath = '/path/to/nginx/html'
// 使用 SSH 插件执行远程部署
sshPublisher(publishers: [sshPublisherDesc(configName: 'SSH_Config', verbose: true, transfers: [
sshTransfer(execCommand: "rm -rf ${remoteDeployPath}/*", execTimeout: 120000),
sshTransfer(sourceFiles: "${mkdocsSiteDir}/*", removePrefix: "${mkdocsSiteDir}", remoteDirectory: remoteDeployPath)
])])
}
}
}
}
}