Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 13 additions & 4 deletions .github/workflows/build-haos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ on:
workflow_dispatch:
inputs:
download_url:
description: '请输入haos下载地址(扩展名 .img.gz/.img.xz/.img.zip)'
description: '输入 latest 自动选择最新 HAOS;或填写直链(.img.gz/.img.xz/.img.zip)'
required: true
default: 'https://github.com/home-assistant/operating-system/releases/download/15.0/haos_generic-x86-64-15.0.img.xz'
default: 'latest'
publish:
description: '是否创建或更新 GitHub Release'
required: false
Expand Down Expand Up @@ -34,8 +34,8 @@ jobs:

- name: Validate Download URL
run: |
if [[ ! "$DOWNLOAD_URL" =~ ^https?://[^[:space:]]+\.(gz|xz|zip)(\?[^[:space:]]*)?$ ]]; then
echo "❌ 错误:地址需以 http(s) 开头且扩展名为 .gz/.xz/.zip"
if [[ "$DOWNLOAD_URL" != "latest" && ! "$DOWNLOAD_URL" =~ ^https?://[^[:space:]]+\.(gz|xz|zip)(\?[^[:space:]]*)?$ ]]; then
echo "❌ 错误:请输入 latest,或提供以 http(s) 开头且扩展名为 .gz/.xz/.zip 的地址"
echo "当前输入:$DOWNLOAD_URL"
exit 1
fi
Expand All @@ -44,6 +44,15 @@ jobs:
run: |
bash ./haos.sh "$DOWNLOAD_URL"

- name: Report selected upstream firmware
if: ${{ always() }}
run: |
{
echo "### 上游 HAOS 固件"
echo "- Release: \`${HAOS_SELECTED_RELEASE:-manual}\`"
echo "- Asset: \`${HAOS_SELECTED_ASSET:-$DOWNLOAD_URL}\`"
} >> "$GITHUB_STEP_SUMMARY"

- name: "Publish"
if: ${{ inputs.publish }}
uses: softprops/action-gh-release@v2.2.1
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
3. 其中OpenWrt分为istoreos、immortalwrt、EzOpWrt、eSirOpenWrt 安装器。实际上安装任意一种即可,因为换固件可在网页里随时换。
4. istoreos 在虚拟机上并没有安装器,因此本项目算是一种补充。(物理机安装istoreos就可以忽略本项目了)
5. armbian 安装器 目前构建2种 一种是minimal 一种是标准版 较低配置的x86-64设备建议使用minimal 比如(wyse3040瘦客户机)
6. HAOS可自定义下载地址,默认构建HAOS 15.0 `haos_generic-x86-64-15.0.img.xz`
6. HAOS 默认输入 `latest` 自动跟踪 Home Assistant OS 最新稳定版,也支持自定义 `.img.gz`、`.img.xz`、`.img.zip` 下载地址
7. 支持自定义openwrt镜像生成iso安装器,其中openwrt镜像的压缩包格式是`img.gz` `img.zip` `img.xz`三种

## 和传统的NAS虚拟机导入img有什么区别
Expand Down
40 changes: 38 additions & 2 deletions haos.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,54 @@
set -Eeuo pipefail

# 校验参数是否存在
if [ -z "$1" ]; then
echo "❌ 错误:未提供下载地址!"
if [ "$#" -lt 1 ] || [ -z "${1:-}" ]; then
echo "❌ 错误:未提供下载地址或 latest!"
exit 1
fi

rm -rf imm
mkdir -p imm
DOWNLOAD_URL="$1"
SELECTED_RELEASE="manual"

# 支持使用 latest 自动跟踪 Home Assistant OS 官方最新稳定版。
# GitHub 的 /releases/latest 接口不会返回预发布版本,适合用于默认构建。
if [[ "$DOWNLOAD_URL" == "latest" ]]; then
API_URL="https://api.github.com/repos/home-assistant/operating-system/releases/latest"
release_json="$(curl -fsSL --retry 3 --retry-delay 2 --connect-timeout 20 \
-H 'Accept: application/vnd.github+json' \
-H 'X-GitHub-Api-Version: 2022-11-28' \
"$API_URL")" || {
echo "❌ 获取 Home Assistant OS 最新 Release 失败!" >&2
exit 1
}

SELECTED_RELEASE="$(printf '%s' "$release_json" | jq -r '.tag_name // empty')"
DOWNLOAD_URL="$(printf '%s' "$release_json" | jq -r '
[.assets[]?
| select(.name | test("^haos_generic-x86-64-.*\\.img\\.(gz|xz|zip)$"))
| .browser_download_url]
| .[0] // empty')"

if [[ -z "$SELECTED_RELEASE" || -z "$DOWNLOAD_URL" ]]; then
echo "❌ 最新 HAOS Release 中没有找到 haos_generic-x86-64 压缩镜像!" >&2
exit 1
fi

echo "上游 Release: $SELECTED_RELEASE"
fi

url_path="${DOWNLOAD_URL%%\?*}"
filename=$(basename "$url_path")
OUTPUT_PATH="imm/$filename"

if [[ -n "${GITHUB_ENV:-}" ]]; then
{
printf 'HAOS_SELECTED_RELEASE=%s\n' "$SELECTED_RELEASE"
printf 'HAOS_SELECTED_ASSET=%s\n' "$filename"
} >> "$GITHUB_ENV"
fi

echo "下载地址: $DOWNLOAD_URL"
echo "保存路径: $OUTPUT_PATH"

Expand Down
4 changes: 2 additions & 2 deletions supportFiles/haos/info.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

#### 适用范围:所有虚拟机和物理机
#### 安装器中的haos-installer-x86_64.iso 用于快速安装HAOS
#### 默认版本15.0 haos_generic-x86-64-15.0.img.xz
#### 默认自动选择 Home Assistant OS 最新稳定版,也支持运行时指定下载地址
#### 出处:https://github.com/home-assistant/operating-system/releases/

<img src="https://github.com/user-attachments/assets/c5b02f19-12b7-463f-9e01-e080152bed66" width="50%" height="50%">

<img src="https://github.com/user-attachments/assets/880fbb54-d83d-4f07-b64a-1c71a7ff57b3" width="50%" height="50%">
<img src="https://github.com/user-attachments/assets/880fbb54-d83d-4f07-b64a-1c71a7ff57b3" width="50%" height="50%">
Loading