Files
tra-app/devops/自动化构建/安卓打包/1-拉取代码/拉取gradle离线依赖文件.txt
T

88 lines
2.3 KiB
Plaintext

pwd
ls -a
echo "开始"
# rm -rf gradle-home
rm -rf android-sdk-1.0.1.zip
mkdir -p gradle-home
echo "0------------------------"
PACKAGE_NAME="gradle"
ZIP_FILE="${PACKAGE_NAME}-1.0.1.tar.gz"
DEST_DIR="gradle-home"
NEXUS_URL="http://25.12.10.69:8081"
ZIP_URL="${NEXUS_URL}/repository/gradle-release/org/df/gradle/1.0.1/${ZIP_FILE}"
MD5_URL="${ZIP_URL}.md5" # MD5 文件的直接链接
# 错误处理函数
handle_error() {
echo "错误:$1"
exit 1
}
# 获取远程MD5值
get_remote_md5() {
local remote_md5=$(wget -q -O - "$MD5_URL" | awk '{print $1}')
if [ -z "$remote_md5" ]; then
handle_error "无法获取远程MD5校验值"
fi
echo "$remote_md5"
}
# 获取本地MD5值
get_local_md5() {
if [ -f "$ZIP_FILE" ]; then
md5sum "$ZIP_FILE" | awk '{print $1}'
else
echo ""
fi
}
remote_md5=$(get_remote_md5)
local_md5=$(get_local_md5)
# 3. 比较MD5值
if [ "$remote_md5" = "$local_md5" ]; then
echo "MD5校验值匹配,无需下载更新"
# 检查是否需要解压(如果目标目录为空)
if [ ! -d "$DEST_DIR" ] || [ -z "$(ls -A "$DEST_DIR")" ]; then
echo "目标目录为空,开始解压..."
mkdir -p "$DEST_DIR"
tar -xzvf "$ZIP_FILE" -C "$DEST_DIR" --strip-components=1 || handle_error "解压失败"
echo "解压完成"
else
echo "目标目录非空,跳过解压"
fi
exit 0
fi
echo "MD5校验值不匹配或文件不存在,开始更新..."
# 4. 尝试删除已存在的文件和文件夹
echo "正在清理旧文件..."
rm -rf "$ZIP_FILE" "$DEST_DIR" || handle_error "清理失败"
echo "清理完成"
# 5. 下载ZIP文件
echo "开始下载 $ZIP_FILE..."
wget -q "$ZIP_URL" -O "$ZIP_FILE" || handle_error "下载失败"
echo "下载完成"
# 6. 验证下载后的MD5(使用已获取的remote_md5,无需重新获取)
new_local_md5=$(get_local_md5)
if [ "$new_local_md5" != "$remote_md5" ]; then
handle_error "下载的文件MD5校验失败: 本地=$new_local_md5, 远程=$remote_md5"
fi
echo "MD5校验成功"
# 7. 创建目标目录
mkdir -p "$DEST_DIR" || handle_error "创建目录失败"
# 8. 解压文件
echo "正在解压..."
tar -xzvf "$ZIP_FILE" -C "$DEST_DIR" --strip-components=1 || handle_error "解压失败"
echo "解压完成,文件已提取到 $DEST_DIR"
ls -a