LuTong 1 неделя назад
Родитель
Сommit
078db03cd1
1 измененных файлов с 83 добавлено и 0 удалено
  1. 83 0
      Jenkinsfile

+ 83 - 0
Jenkinsfile

@@ -0,0 +1,83 @@
+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()
+        }
+    }
+}