| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- pipeline {
- agent any
- environment {
- // Jenkins 容器内路径(docker-compose 已挂载 ./nginx/html:/web_deploy)
- DEPLOY_PATH = '/web_deploy/alien_website/'
- 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 {
- sh '''
- set -e
- if [ ! -d dist ]; then
- echo "错误: dist 目录不存在,构建可能失败"
- exit 1
- fi
- if [ ! -d "${DEPLOY_PATH}" ] && [ ! -d /web_deploy ]; then
- echo "错误: /web_deploy 未挂载,请检查 docker-compose 中 jenkins volumes 配置"
- echo " - ./nginx/html:/web_deploy"
- exit 1
- fi
- echo "开始本地部署到 ${DEPLOY_PATH}"
- mkdir -p "${DEPLOY_PATH}"
- find "${DEPLOY_PATH}" -mindepth 1 -exec rm -rf {} +
- cp -a dist/. "${DEPLOY_PATH}/"
- echo "部署完成"
- '''
- }
- }
- }
- post {
- success {
- echo "网站已成功部署至 ${DEPLOY_PATH}"
- }
- failure {
- echo '部署失败,请查看上方日志'
- }
- always {
- cleanWs()
- }
- }
- }
|