将 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_DIRmkdocs build
if [ $? -eq 0 ]; then echo "MkDocs 构建成功"else echo "MkDocs 构建失败,请检查问题并重试" exit 1fi
echo "开始将构建后的站点文件部署到远程服务器..."
# 使用 scp 将构建后的站点文件传输到远程 Nginx 服务器scp -r $MKDOCS_SITE_DIR $SSH_USER@$SSH_HOST:$REMOTE_DEPLOY_PATH
if [ $? -eq 0 ]; then echo "站点文件成功部署到远程服务器"else echo "站点文件部署失败,请检查问题并重试" exit 1fi
echo "部署完成"Windows
@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_userset SSH_HOST=nginx_server_ipset 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) ])]) } } } }}