mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-02-01 18:41:54 +08:00
feat: 完善 GitHub Actions 工作流和构建系统
- 添加自动下载缺失文件功能,支持 .xz 压缩格式 - 优化构建流程,增加文件清理和压缩功能 - 修复发布资产上传步骤,确保预发布标记正确设置 - 调整发布标签格式,包含版本号、设备目标和运行 ID - 升级 Actions 版本,使用 softprops/action-gh-release@v1 - 移除 NFS 挂载依赖,简化部署流程 - 增强错误处理和日志输出
This commit is contained in:
@@ -1,5 +1,21 @@
|
||||
#!/bin/bash
|
||||
|
||||
# --- 压缩函数 ---
|
||||
|
||||
# 压缩镜像文件(仅在 GitHub Actions 环境中)
|
||||
compress_image_file() {
|
||||
local file_path="$1"
|
||||
|
||||
if is_github_actions && [[ -f "$file_path" ]]; then
|
||||
echo "信息:压缩镜像文件: $file_path"
|
||||
if xz -9 -vv "$file_path"; then
|
||||
echo "信息:压缩完成: ${file_path}.xz"
|
||||
else
|
||||
echo "警告:压缩文件 $file_path 失败"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# --- 打包函数 ---
|
||||
|
||||
pack_img() {
|
||||
@@ -29,7 +45,22 @@ pack_img() {
|
||||
sudo qemu-img convert -f raw -O vmdk "$raw_img" "$vmdk_img" || echo "警告:转换为 VMDK 失败"
|
||||
echo "信息:转换为 VDI..."
|
||||
sudo qemu-img convert -f raw -O vdi "$raw_img" "$vdi_img" || echo "警告:转换为 VDI 失败"
|
||||
|
||||
# 在 GitHub Actions 环境中压缩 VM 镜像文件
|
||||
if is_github_actions; then
|
||||
echo "信息:在 GitHub Actions 环境中压缩 VM 镜像文件..."
|
||||
compress_image_file "$raw_img"
|
||||
compress_image_file "$vmdk_img"
|
||||
compress_image_file "$vdi_img"
|
||||
fi
|
||||
else
|
||||
# 在 GitHub Actions 环境中压缩镜像文件
|
||||
if is_github_actions; then
|
||||
echo "信息:在 GitHub Actions 环境中压缩镜像文件..."
|
||||
compress_image_file "$OUTPUTDIR/$target_img_name"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "信息:镜像打包完成: $OUTPUTDIR/$target_img_name"
|
||||
}
|
||||
|
||||
@@ -48,6 +79,10 @@ pack_img_onecloud() {
|
||||
unmount_all
|
||||
fi
|
||||
|
||||
# 自动下载 AmlImg 工具(如果不存在)
|
||||
download_file_if_missing "$aml_packer" || { echo "错误:下载 AmlImg 工具失败" >&2; exit 1; }
|
||||
sudo chmod +x "$aml_packer" || { echo "错误:设置 AmlImg 工具执行权限失败" >&2; exit 1; }
|
||||
|
||||
echo "信息:将 raw rootfs 转换为 sparse image..."
|
||||
# 先删除可能存在的旧 sparse 文件
|
||||
sudo rm -f "$rootfs_sparse_img"
|
||||
@@ -55,11 +90,16 @@ pack_img_onecloud() {
|
||||
sudo rm "$rootfs_raw_img" # 删除 raw 文件,因为它已被转换
|
||||
|
||||
echo "信息:使用 AmlImg 工具打包..."
|
||||
sudo chmod +x "$aml_packer"
|
||||
sudo "$aml_packer" pack "$OUTPUTDIR/$target_img_name" "$TMPDIR/" || { echo "错误:AmlImg 打包失败" >&2; exit 1; }
|
||||
|
||||
echo "信息:清理 Onecloud 临时文件..."
|
||||
sudo rm -f "$TMPDIR/6.boot.PARTITION.sparse" "$TMPDIR/7.rootfs.PARTITION.sparse" "$TMPDIR/dts.img"
|
||||
|
||||
# 在 GitHub Actions 环境中压缩 Onecloud 镜像文件
|
||||
if is_github_actions; then
|
||||
echo "信息:在 GitHub Actions 环境中压缩 Onecloud 镜像文件..."
|
||||
compress_image_file "$OUTPUTDIR/$target_img_name"
|
||||
fi
|
||||
|
||||
echo "信息:Onecloud burn 镜像打包完成: $OUTPUTDIR/$target_img_name"
|
||||
}
|
||||
Reference in New Issue
Block a user