|
|
@@ -1,17 +1,18 @@
|
|
|
#!/bin/bash
|
|
|
-
|
|
|
# 配置
|
|
|
-SOURCE_DIR="dist-prod" # 打包生成的源文件夹
|
|
|
-ZIP_NAME="dc.ifoodme.com.zip" # 输出的 ZIP 文件名
|
|
|
-TEMP_DIR="/tmp/dc.ifoodme.com" # 临时目录,用于构建目标结构
|
|
|
-TARGET_DIR="dc.ifoodme.com" # ZIP 中的目标目录名
|
|
|
-BUILD_CMD="pnpm run build:prod" # 打包命令
|
|
|
+SOURCE_DIR="dist-prod" # 打包生成的源文件夹
|
|
|
+ZIP_NAME="dc.ifoodme.com.zip" # 输出的 ZIP 文件名
|
|
|
+TEMP_DIR="/tmp/dc.ifoodme.com" # 临时目录,用于构建目标结构
|
|
|
+TARGET_DIR="dc.ifoodme.com" # ZIP 中的目标目录名
|
|
|
+BUILD_CMD="pnpm run build:prod" # 打包命令
|
|
|
|
|
|
# FTP 配置
|
|
|
FTP_SERVER="104.233.167.88"
|
|
|
FTP_PORT="21"
|
|
|
-FTP_USER="admin" # 这里替换成你的 FTP 用户名
|
|
|
-FTP_PASS="snF1szwjJZcJ" # 这里替换成你的 FTP 密码
|
|
|
+FTP_USER="admin"
|
|
|
+# 这里替换成你的 FTP 用户名
|
|
|
+FTP_PASS="snF1szwjJZcJ"
|
|
|
+# 这里替换成你的 FTP 密码
|
|
|
FTP_TARGET_DIR="/"
|
|
|
|
|
|
# 颜色输出
|
|
|
@@ -19,6 +20,10 @@ RED='\033[0;31m'
|
|
|
GREEN='\033[0;32m'
|
|
|
NC='\033[0m' # No Color
|
|
|
|
|
|
+# 捕获中断信号
|
|
|
+trap 'cleanup; exit 1' INT TERM
|
|
|
+
|
|
|
+
|
|
|
# 检查命令是否存在
|
|
|
command_exists() {
|
|
|
command -v "$1" >/dev/null 2>&1
|
|
|
@@ -68,15 +73,10 @@ check_source() {
|
|
|
# 打包 ZIP
|
|
|
create_zip() {
|
|
|
echo "开始打包 ZIP..."
|
|
|
-
|
|
|
- # 创建临时目录并复制文件
|
|
|
+ rm -rf "$TEMP_DIR"
|
|
|
mkdir -p "$TEMP_DIR"
|
|
|
cp -r "$SOURCE_DIR"/* "$TEMP_DIR"
|
|
|
-
|
|
|
- # 重命名临时目录为目标目录名
|
|
|
mv "$TEMP_DIR" "$TARGET_DIR"
|
|
|
-
|
|
|
- # 打包为 ZIP
|
|
|
zip -r "$ZIP_NAME" "$TARGET_DIR" >/dev/null
|
|
|
if [ $? -eq 0 ]; then
|
|
|
echo -e "${GREEN}打包成功:$ZIP_NAME${NC}"
|
|
|
@@ -89,9 +89,7 @@ create_zip() {
|
|
|
# FTP 上传
|
|
|
upload_ftp() {
|
|
|
echo "开始上传文件到 FTP 服务器 $FTP_SERVER:$FTP_PORT ..."
|
|
|
-
|
|
|
- curl -T "$ZIP_NAME" --ftp-create-dirs -u "$FTP_USER:$FTP_PASS" "ftp://$FTP_SERVER:$FTP_PORT$FTP_TARGET_DIR/$ZIP_NAME"
|
|
|
-
|
|
|
+ curl --max-time 300 --retry 3 -T "$ZIP_NAME" --ftp-create-dirs -u "$FTP_USER:$FTP_PASS" "ftp://$FTP_SERVER:$FTP_PORT$FTP_TARGET_DIR/$ZIP_NAME"
|
|
|
if [ $? -eq 0 ]; then
|
|
|
echo -e "${GREEN}文件上传成功:$FTP_TARGET_DIR/$ZIP_NAME${NC}"
|
|
|
else
|
|
|
@@ -113,6 +111,19 @@ test_unzip() {
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
+trigger_jenkins() {
|
|
|
+ JENKINS_URL="https://code.ifoodme.com/job/online-order-vue/build"
|
|
|
+ JENKINS_TOKEN="11d3ef87866e3756c131425ef09d705002"
|
|
|
+ echo "触发 Jenkins 任务..."
|
|
|
+ curl -X POST "$JENKINS_URL" --user "username:$JENKINS_TOKEN"
|
|
|
+ if [ $? -eq 0 ]; then
|
|
|
+ echo -e "${GREEN}Jenkins 任务触发成功${NC}"
|
|
|
+ else
|
|
|
+ echo -e "${RED}Jenkins 任务触发失败${NC}"
|
|
|
+ exit 1
|
|
|
+ fi
|
|
|
+}
|
|
|
+
|
|
|
# 清理
|
|
|
cleanup() {
|
|
|
echo "清理临时文件..."
|
|
|
@@ -123,12 +134,15 @@ cleanup() {
|
|
|
# 主函数
|
|
|
main() {
|
|
|
check_dependencies
|
|
|
- check_and_remove_zip # 先检查并删除旧的 ZIP 文件
|
|
|
+ check_and_remove_zip # 先检查并删除旧的 ZIP 文件
|
|
|
run_build
|
|
|
check_source
|
|
|
create_zip
|
|
|
+ test_unzip
|
|
|
upload_ftp
|
|
|
cleanup
|
|
|
+ # trigger jenkins 任务
|
|
|
+ trigger_jenkins
|
|
|
echo -e "${GREEN}所有任务完成!${NC}"
|
|
|
}
|
|
|
|