| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- pipeline {
- agent any
- environment {
- // 部署目标
- DEPLOY_HOST = '120.26.186.130'
- DEPLOY_PATH = '/docker/middleware/nginx/html/alien_website/'
- // Jenkins 凭据 ID(SSH 私钥,需在 Jenkins 中预先配置)
- SSH_CREDENTIALS_ID = 'alien-website-deploy-ssh'
- // SSH 登录用户(按服务器实际用户修改)
- DEPLOY_USER = 'root'
- // Node 版本(需 Jenkins 安装 NodeJS 插件并配置同名工具)
- NODEJS_TOOL = 'NodeJS-20'
- }
- options {
- buildDiscarder(logRotator(numToKeepStr: '10'))
- timeout(time: 30, unit: 'MINUTES')
- timestamps()
- }
- stages {
- stage('Checkout') {
- steps {
- checkout scm
- }
- }
- stage('Install & Build') {
- steps {
- nodejs(nodeJSInstallationName: env.NODEJS_TOOL) {
- sh '''
- node -v
- npm -v
- npm ci
- npm run build
- '''
- }
- }
- }
- stage('Deploy') {
- steps {
- sshagent(credentials: [env.SSH_CREDENTIALS_ID]) {
- sh '''
- set -e
- if [ ! -d dist ]; then
- echo "错误: dist 目录不存在,构建可能失败"
- exit 1
- fi
- echo "开始部署到 ${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_PATH}"
- # 确保目标目录存在
- ssh -o StrictHostKeyChecking=no ${DEPLOY_USER}@${DEPLOY_HOST} \
- "mkdir -p ${DEPLOY_PATH}"
- # 将 dist 目录内容同步到网站根目录(不含 dist 文件夹本身)
- rsync -avz --delete \
- -e "ssh -o StrictHostKeyChecking=no" \
- dist/ \
- ${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_PATH}
- echo "部署完成"
- '''
- }
- }
- }
- }
- post {
- success {
- echo "网站已成功部署至 ${DEPLOY_HOST}:${DEPLOY_PATH}"
- }
- failure {
- echo '部署失败,请查看上方日志'
- }
- always {
- cleanWs()
- }
- }
- }
|