Files
test/Jenkinsfile.dev110
2026-04-08 21:26:18 +08:00

140 lines
4.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
pipeline {
agent any
environment {
// 项目信息
PROJECT_NAME = 'DCS 画布编辑器'
APP_NAME = 'cslab-dcs-web'
BUILD_DIR = 'apps/web/dist'
// 部署目标 - 110开发环境 (内网 110)
SSH_SERVER = 'ssh-dev-110'
DEPLOY_HOST = '192.168.1.110'
REMOTE_DIR = 'D:/www/chemlab/jenkins-dir'
DEPLOY_BASE = 'D:/www/chemlab'
DEPLOY_DIR = "${DEPLOY_BASE}/${APP_NAME}"
// 企业微信 Webhook从 Jenkins 凭据读取)
WEBHOOK_URL = credentials('webhook-url')
// Node 版本(需在 Jenkins 全局工具配置中添加同名 NodeJS 安装)
NODE_HOME = tool(name: 'NodeJS-22', type: 'nodejs')
PATH = "${NODE_HOME}/bin:${env.PATH}"
}
options {
timeout(time: 15, unit: 'MINUTES')
disableConcurrentBuilds()
buildDiscarder(logRotator(numToKeepStr: '10'))
}
stages {
stage('环境检查') {
steps {
echo "📋 项目: ${PROJECT_NAME}"
echo "🌿 分支: ${env.BRANCH_NAME ?: env.GIT_BRANCH ?: 'unknown'}"
echo "🔧 环境: 110开发 (${DEPLOY_HOST})"
sh '''
echo "Node 版本: $(node -v)"
echo "pnpm 版本: $(pnpm -v)"
'''
}
}
stage('安装依赖') {
steps {
echo '📦 安装项目依赖...'
sh 'ELECTRON_SKIP_BINARY_DOWNLOAD=1 pnpm install'
}
}
stage('构建') {
steps {
echo '🔨 构建110开发环境版本...'
sh 'pnpm build:web'
}
}
stage('部署') {
steps {
echo "🚀 部署到110开发环境: ${DEPLOY_HOST}"
sshPublisher(
publishers: [
sshPublisherDesc(
configName: SSH_SERVER,
transfers: [
sshTransfer(
sourceFiles: "${BUILD_DIR}/**",
removePrefix: BUILD_DIR,
remoteDirectory: APP_NAME,
execCommand: """powershell -NoProfile -Command "Remove-Item '${DEPLOY_DIR}' -Recurse -Force -ErrorAction SilentlyContinue; Move-Item '${REMOTE_DIR}/${APP_NAME}' '${DEPLOY_DIR}'"
"""
)
]
)
]
)
}
}
}
post {
success {
echo '✅ 110开发环境部署成功'
script {
def branch = env.BRANCH_NAME ?: env.GIT_BRANCH ?: 'unknown'
def timestamp = new Date().format('yyyy-MM-dd HH:mm:ss', TimeZone.getTimeZone('Asia/Shanghai'))
def content = """## 🚀 DCS 画布编辑器 自动部署通知<font color=\\"warning\\"> 110开发环境</font>
**部署时间**: ${timestamp}
**部署项目**: **${PROJECT_NAME}**
**分支**: ${branch}
**构建编号**: #${env.BUILD_NUMBER}
> Jenkins 自动构建部署完成"""
sh """
curl -s -X POST \
-H 'Content-Type: application/json' \
-d '{"msgtype":"markdown","markdown":{"content":"${content}"}}' \
'${WEBHOOK_URL}' || true
"""
}
}
failure {
echo '❌ 110开发环境部署失败'
script {
def branch = env.BRANCH_NAME ?: env.GIT_BRANCH ?: 'unknown'
def timestamp = new Date().format('yyyy-MM-dd HH:mm:ss', TimeZone.getTimeZone('Asia/Shanghai'))
def content = """## ❌ DCS 画布编辑器 部署失败通知<font color=\\"warning\\"> 110开发环境</font>
**时间**: ${timestamp}
**项目**: **${PROJECT_NAME}**
**分支**: ${branch}
**构建编号**: [#${env.BUILD_NUMBER}](${env.BUILD_URL})
> 请检查 Jenkins 构建日志"""
sh """
curl -s -X POST \
-H 'Content-Type: application/json' \
-d '{"msgtype":"markdown","markdown":{"content":"${content}"}}' \
'${WEBHOOK_URL}' || true
"""
}
}
always {
// 清理构建产物
sh "rm -rf ${BUILD_DIR}"
}
}
}