| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- 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_VERSION = '20'
- }
- options {
- buildDiscarder(logRotator(numToKeepStr: '10'))
- timeout(time: 30, unit: 'MINUTES')
- timestamps()
- }
- stages {
- stage('Checkout') {
- steps {
- checkout scm
- }
- }
- stage('Install & Build') {
- steps {
- sh '''
- set -e
- export NVM_DIR="$HOME/.nvm"
- if [ ! -s "$NVM_DIR/nvm.sh" ]; then
- echo "安装 nvm..."
- curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
- fi
- . "$NVM_DIR/nvm.sh"
- nvm install ${NODE_VERSION}
- nvm use ${NODE_VERSION}
- 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()
- }
- }
- }
|