脚本更新

This commit is contained in:
Cody
2026-03-10 16:52:41 +08:00
parent 5240ea810b
commit 270abf4741

View File

@@ -1,19 +1,19 @@
#!/bin/bash #!/bin/bash
# SDK Tag 發布腳本 (僅限 main 分支使用) # SDK Tag 發布腳本 (僅限 dev 分支使用)
# 用法: ./scripts/publish_sdk.sh <sdk-name> <version> # 用法: ./scripts/publish_sdk.sh <sdk-name> <version>
# 此腳本執行後的行為說明: # 此腳本執行後的行為說明:
# 1.強制分支檢查:如果當前不是 main 分支,腳本會立即報錯終止。 # 1.強制分支檢查:如果當前不是 dev 分支,腳本會立即報錯終止。
# 2.版本一致性檢查:它會讀取 packages/xxx/pubspec.yaml 裡面的 version 欄位。如果你輸入的參數是 1.1.0 但檔案裡寫的是 1.0.9,腳本會拒絕執行。這強制要求你必須在 PR 階段就正確更新版本號。 # 2.版本一致性檢查:它會讀取 packages/xxx/pubspec.yaml 裡面的 version 欄位。如果你輸入的參數是 1.1.0 但檔案裡寫的是 1.0.9,腳本會拒絕執行。這強制要求你必須在 PR 階段就正確更新版本號。
# 3.同步檢查:它會檢查本地的 main 是否與遠端的 origin/main 一致。這防止你在忘記 git pull 的情況下把 Tag 打在舊的 Commit 上。 # 3.同步檢查:它會檢查本地的 dev 是否與遠端的 origin/dev 一致。這防止你在忘記 git pull 的情況下把 Tag 打在舊的 Commit 上。
# 4.防重複檢查:如果該 Tag 名稱(例如 networks_sdk/1.1.0)已經存在,腳本會報錯,防止覆蓋發布。 # 4.防重複檢查:如果該 Tag 名稱(例如 networks_sdk/1.1.0)已經存在,腳本會報錯,防止覆蓋發布。
# 5.不修改檔案:此腳本不會修改任何代碼,它只負責「蓋章(打 Tag」和「公告Push Tag」。 # 5.不修改檔案:此腳本不會修改任何代碼,它只負責「蓋章(打 Tag」和「公告Push Tag」。
#操作流程: #操作流程:
# 1.開發:在功能分支開發,手動更新 pubspec.yaml 的版本號。 # 1.開發:在功能分支開發,手動更新 pubspec.yaml 的版本號。
# 2.審核:提交 PR通過測試與 Code Review合併進入 main 分支。 # 2.審核:提交 PR通過測試與 Code Review合併進入 dev 分支。
# 3.發布: # 3.發布:
# •git checkout main # •git checkout dev
# •git pull # •git pull
# •執行 melos run publish:sdk:only -- <sdk-name> <version> # •執行 melos run publish:sdk:only -- <sdk-name> <version>
# 範例: # 範例:
@@ -41,12 +41,12 @@ VERSION=$2
PACKAGE_DIR="packages/$SDK_NAME" PACKAGE_DIR="packages/$SDK_NAME"
TAG_NAME="${SDK_NAME}/${VERSION}" TAG_NAME="${SDK_NAME}/${VERSION}"
# 1. 檢查是否在 main 分支 # 1. 檢查是否在 dev 分支
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [ "$CURRENT_BRANCH" != "main" ]; then if [ "$CURRENT_BRANCH" != "dev" ]; then
echo -e "${RED}錯誤: 此腳本只能在 'main' 分支執行。${NC}" echo -e "${RED}錯誤: 此腳本只能在 'dev' 分支執行。${NC}"
echo "當前分支為: $CURRENT_BRANCH" echo "當前分支為: $CURRENT_BRANCH"
echo "請先合併 PR 並切換至 main 分支後再執行。" echo "請先合併 PR 並切換至 dev 分支後再執行。"
exit 1 exit 1
fi fi
@@ -67,13 +67,13 @@ if [ "$FILE_VERSION" != "$VERSION" ]; then
exit 1 exit 1
fi fi
# 4. 檢查遠端是否有更新 (確保本地 main 是最新的) # 4. 檢查遠端是否有更新 (確保本地 dev 是最新的)
echo -e "${CYAN}正在檢查遠端狀態...${NC}" echo -e "${CYAN}正在檢查遠端狀態...${NC}"
git fetch origin git fetch origin
LOCAL=$(git rev-parse HEAD) LOCAL=$(git rev-parse HEAD)
REMOTE=$(git rev-parse origin/main) REMOTE=$(git rev-parse origin/dev)
if [ "$LOCAL" != "$REMOTE" ]; then if [ "$LOCAL" != "$REMOTE" ]; then
echo -e "${RED}錯誤: 本地 main 分支落後於遠端,請先執行 git pull。${NC}" echo -e "${RED}錯誤: 本地 dev 分支落後於遠端,請先執行 git pull。${NC}"
exit 1 exit 1
fi fi
@@ -89,7 +89,7 @@ echo -e "${GREEN}========================================${NC}"
echo "SDK Name: $SDK_NAME" echo "SDK Name: $SDK_NAME"
echo "Version: $VERSION" echo "Version: $VERSION"
echo "Tag: $TAG_NAME" echo "Tag: $TAG_NAME"
echo "Branch: main" echo "Branch: dev"
echo -e "${GREEN}========================================${NC}" echo -e "${GREEN}========================================${NC}"
# 確認訊息 # 確認訊息