fix: use per-directory API calls to avoid large response truncation
Some checks failed
Deploy to Server / deploy (push) Failing after 10m2s
Some checks failed
Deploy to Server / deploy (push) Failing after 10m2s
This commit is contained in:
@@ -24,28 +24,37 @@ jobs:
|
|||||||
echo $SUDO_PASSWORD | sudo -S docker compose down
|
echo $SUDO_PASSWORD | sudo -S docker compose down
|
||||||
|
|
||||||
echo "===== 通过 API 下载代码 ====="
|
echo "===== 通过 API 下载代码 ====="
|
||||||
# 获取文件树
|
|
||||||
FILE_LIST=$(curl -sk -u "$AUTH" "$API_BASE/repos/$REPO/git/trees/$BRANCH?recursive=true" | python3 -c "
|
# 递归下载目录函数
|
||||||
|
download_dir() {
|
||||||
|
local dir_path="$1"
|
||||||
|
local api_path="${dir_path:+$dir_path}"
|
||||||
|
local url="$API_BASE/repos/$REPO/contents/${api_path}?ref=$BRANCH&token="
|
||||||
|
local items
|
||||||
|
items=$(curl -sk -u "$AUTH" "$API_BASE/repos/$REPO/contents/${api_path}?ref=$BRANCH")
|
||||||
|
echo "$items" | python3 -c "
|
||||||
import json,sys
|
import json,sys
|
||||||
data = json.load(sys.stdin)
|
try:
|
||||||
for item in data.get('tree', []):
|
data = json.load(sys.stdin)
|
||||||
if item['type'] == 'blob':
|
for item in data:
|
||||||
print(item['path'])
|
print(item['type'] + '|' + item['path'])
|
||||||
")
|
except: pass
|
||||||
|
" | while IFS='|' read -r type path; do
|
||||||
echo "共发现 $(echo "$FILE_LIST" | wc -l) 个文件"
|
case "$path" in
|
||||||
|
backend/.env|.git/*) continue ;;
|
||||||
# 逐个下载文件
|
esac
|
||||||
echo "$FILE_LIST" | while read -r filepath; do
|
if [ "$type" = "dir" ]; then
|
||||||
# 跳过不需要的文件
|
mkdir -p "$TARGET_DIR/$path"
|
||||||
case "$filepath" in
|
download_dir "$path"
|
||||||
backend/.env|backend/media/*|.git/*) continue ;;
|
elif [ "$type" = "file" ]; then
|
||||||
esac
|
mkdir -p "$TARGET_DIR/$(dirname "$path")"
|
||||||
mkdir -p "$TARGET_DIR/$(dirname "$filepath")"
|
curl -sk -u "$AUTH" -o "$TARGET_DIR/$path" \
|
||||||
curl -sk -u "$AUTH" -o "$TARGET_DIR/$filepath" \
|
"$API_BASE/repos/$REPO/raw/$path?ref=$BRANCH"
|
||||||
"$API_BASE/repos/$REPO/raw/$filepath?ref=$BRANCH"
|
fi
|
||||||
done
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
download_dir ""
|
||||||
echo "代码更新完成"
|
echo "代码更新完成"
|
||||||
|
|
||||||
echo "===== 配置环境变量 ====="
|
echo "===== 配置环境变量 ====="
|
||||||
|
|||||||
Reference in New Issue
Block a user