1、 插件市场安装NodeJS

2、全局工具配置-NodeJS 安装自己需要的版本

3、新建凭证

4、新建item

5、编辑内容


bash
pipeline {
agent any
tools {
nodejs 'node22' //之前安装node的名称
}
environment {
DEPLOY_SERVER = '' //ip地址
DEPLOY_PORT = '22' //端口
DEPLOY_USER = 'root' //账号
DEPLOY_PASSWORD = '' // 密码
TARGET_DIR = '/www/dist' //部署的目录
}
stages {
stage('Checkout') {
steps {
git url: '', //git地址
branch: 'temporary', //分支
credentialsId: '96a5ad65-5728-47c8-ab12-1588ec7cb6b7' //凭证id
}
}
stage('Build Frontend') {
steps {
sh '''
echo "设置 npm 镜像..."
npm config set registry https://registry.npmmirror.com
echo "安装依赖..."
npm install
echo "构建生产版本..."
npm run build:prod
'''
}
post {
success {
echo "✅ 前端构建成功"
sh 'ls -la dist/'
}
failure {
echo "❌ 前端构建失败"
}
}
}
stage('Deploy to Nginx') {
steps {
script {
try {
echo "🚀 开始部署到 ${DEPLOY_SERVER}"
// 1. 清空目标目录
sh """
sshpass -p ${DEPLOY_PASSWORD} ssh -p ${DEPLOY_PORT} \
-o StrictHostKeyChecking=no \
-o ConnectTimeout=30 \
${DEPLOY_USER}@${DEPLOY_SERVER} \
"rm -rf ${TARGET_DIR}/* && echo '目录清空成功'"
"""
// 2. 检查清空结果
sh """
sshpass -p ${DEPLOY_PASSWORD} ssh -p ${DEPLOY_PORT} \
-o StrictHostKeyChecking=no \
${DEPLOY_USER}@${DEPLOY_SERVER} \
"test -z \"\$(ls -A ${TARGET_DIR})\" && echo '目录已完全清空' || echo '警告:目录可能未完全清空'"
"""
// 3. 上传文件
sh """
echo "上传文件中..."
sshpass -p ${DEPLOY_PASSWORD} scp -P ${DEPLOY_PORT} \
-o StrictHostKeyChecking=no \
-r dist/* \
${DEPLOY_USER}@${DEPLOY_SERVER}:${TARGET_DIR}/
"""
// 4. 验证部署
sh """
echo "验证部署..."
sshpass -p ${DEPLOY_PASSWORD} ssh -p ${DEPLOY_PORT} \
-o StrictHostKeyChecking=no \
${DEPLOY_USER}@${DEPLOY_SERVER} \
"echo '文件数量:'; find ${TARGET_DIR} -type f | wc -l; echo '目录大小:'; du -sh ${TARGET_DIR}"
"""
echo "✅ 部署完成"
} catch (Exception e) {
echo "❌ 部署失败: ${e.getMessage()}"
currentBuild.result = 'FAILURE'
error('部署阶段失败')
}
}
}
post {
success {
echo "🎉 部署成功完成"
}
failure {
echo "⚠️ 部署失败"
}
}
}
}
post {
always {
echo "📋 流水线执行完成 - ${currentBuild.result}"
cleanWs()
}
}
}