deploy.sh 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #!/bin/bash
  2. # 设置变量
  3. PROJECT_NAME="bd-app"
  4. DOCKER_IMAGE_NAME="bd-app"
  5. REMOTE_REGISTRY=${REMOTE_REGISTRY:-"docker.xt.wenhq.top:8083/bd"}
  6. VERSION_FILE="version"
  7. LOG_FILE="deploy.log"
  8. # 日志函数
  9. log() {
  10. echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a $LOG_FILE
  11. }
  12. # 读取当前版本号
  13. CURRENT_VERSION=$(cat $VERSION_FILE)
  14. if [ -z "$CURRENT_VERSION" ]; then
  15. CURRENT_VERSION="0.0"
  16. fi
  17. # 分离大版本号和小版本号
  18. CURRENT_MAJOR=$(echo $CURRENT_VERSION | cut -d'.' -f1)
  19. CURRENT_MINOR=$(echo $CURRENT_VERSION | cut -d'.' -f2)
  20. # 用户选择是否修改大版本号
  21. read -p "是否修改大版本号?(a/i/ne): " modify_major_version
  22. if [ "$modify_major_version" == "a" ]; then
  23. CURRENT_MAJOR=$((CURRENT_MAJOR + 1))
  24. CURRENT_MINOR=0 # 重置小版本号
  25. elif [ "$modify_major_version" == "i" ]; then
  26. CURRENT_MINOR=$((CURRENT_MINOR + 1)) # 增加小版本号
  27. else
  28. echo "跳过版本号修改"
  29. fi
  30. # 更新版本号
  31. NEXT_VERSION="${CURRENT_MAJOR}.${CURRENT_MINOR}"
  32. echo $NEXT_VERSION > $VERSION_FILE
  33. echo -e "\e[1;34;42m版本号:" $NEXT_VERSION " 日期:$(date +"%Y-%m-%d %H:%M:%S")" "\e[0m"
  34. # 用户选择执行的步骤
  35. echo "请选择要执行的步骤(输入数字):"
  36. echo "1. 编译bd-app项目"
  37. echo "2. 构建Docker镜像"
  38. echo "3. 推送Docker镜像到远程仓库"
  39. echo "4. 执行所有步骤"
  40. read -p "请输入选项(1/2/3/4): " choice
  41. # 编译项目
  42. compile_project() {
  43. log "开始编译bd-app项目..."
  44. yarn run build:prod
  45. if [ $? -ne 0 ]; then
  46. log "bd-app项目编译失败。退出脚本。"
  47. exit 1
  48. fi
  49. log "bd-app项目编译完成"
  50. }
  51. # 构建Docker镜像
  52. build_docker_image() {
  53. log "开始构建Docker镜像..."
  54. docker build -t ${REMOTE_REGISTRY}/${DOCKER_IMAGE_NAME}:v${NEXT_VERSION} .
  55. if [ $? -ne 0 ]; then
  56. log "Docker镜像构建失败。退出脚本。"
  57. exit 1
  58. fi
  59. log "Docker镜像构建完成"
  60. }
  61. # 推送Docker镜像到远程仓库
  62. push_docker_image() {
  63. log "开始推送Docker镜像到远程仓库..."
  64. docker push ${REMOTE_REGISTRY}/${DOCKER_IMAGE_NAME}:v${NEXT_VERSION}
  65. if [ $? -ne 0 ]; then
  66. log "Docker镜像推送失败。退出脚本。"
  67. exit 1
  68. fi
  69. log "Docker镜像推送完成"
  70. }
  71. # 根据用户选择执行相应的步骤
  72. case $choice in
  73. 1)
  74. compile_project
  75. ;;
  76. 2)
  77. build_docker_image
  78. ;;
  79. 3)
  80. push_docker_image
  81. ;;
  82. 4)
  83. compile_project
  84. build_docker_image
  85. push_docker_image
  86. ;;
  87. *)
  88. log "无效的选项。退出脚本。"
  89. exit 1
  90. ;;
  91. esac
  92. log "所有任务完成"