Jenkinsfile 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. pipeline {
  2. agent any
  3. environment {
  4. // Jenkins 容器内路径(docker-compose 已挂载 ./nginx/html:/web_deploy)
  5. DEPLOY_PATH = '/web_deploy/alien_website/'
  6. NODE_VERSION = '20'
  7. }
  8. options {
  9. buildDiscarder(logRotator(numToKeepStr: '10'))
  10. timeout(time: 30, unit: 'MINUTES')
  11. timestamps()
  12. }
  13. stages {
  14. stage('Checkout') {
  15. steps {
  16. checkout scm
  17. }
  18. }
  19. stage('Install & Build') {
  20. steps {
  21. sh '''
  22. set -e
  23. export NVM_DIR="$HOME/.nvm"
  24. if [ ! -s "$NVM_DIR/nvm.sh" ]; then
  25. echo "安装 nvm..."
  26. curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
  27. fi
  28. . "$NVM_DIR/nvm.sh"
  29. nvm install ${NODE_VERSION}
  30. nvm use ${NODE_VERSION}
  31. node -v
  32. npm -v
  33. npm ci
  34. npm run build
  35. '''
  36. }
  37. }
  38. stage('Deploy') {
  39. steps {
  40. sh '''
  41. set -e
  42. if [ ! -d dist ]; then
  43. echo "错误: dist 目录不存在,构建可能失败"
  44. exit 1
  45. fi
  46. if [ ! -d "${DEPLOY_PATH}" ] && [ ! -d /web_deploy ]; then
  47. echo "错误: /web_deploy 未挂载,请检查 docker-compose 中 jenkins volumes 配置"
  48. echo " - ./nginx/html:/web_deploy"
  49. exit 1
  50. fi
  51. echo "开始本地部署到 ${DEPLOY_PATH}"
  52. mkdir -p "${DEPLOY_PATH}"
  53. find "${DEPLOY_PATH}" -mindepth 1 -exec rm -rf {} +
  54. cp -a dist/. "${DEPLOY_PATH}/"
  55. echo "部署完成"
  56. '''
  57. }
  58. }
  59. }
  60. post {
  61. success {
  62. echo "网站已成功部署至 ${DEPLOY_PATH}"
  63. }
  64. failure {
  65. echo '部署失败,请查看上方日志'
  66. }
  67. always {
  68. cleanWs()
  69. }
  70. }
  71. }