feat(driver): 拆分驱动资产到独立发布仓库

- 驱动下载和版本查询统一切换到 Syngnat/GoNavi-DriverAgents
- release/dev-build 将单驱动资产、总包、索引和校验文件发布到独立仓库
- GoNavi 主仓库 Release 仅保留主程序资产和主程序校验文件
- dev 构建驱动资产使用 dev-latest 预发布供测试版下载
- 补充驱动仓库 URL、dev tag 和总包兜底相关测试
This commit is contained in:
Syngnat
2026-05-13 09:21:50 +08:00
parent e09391a286
commit 1f3cc2c686
4 changed files with 213 additions and 34 deletions

View File

@@ -579,8 +579,12 @@ jobs:
out_name = "GoNavi-DriverAgents.zip"
index_name = "GoNavi-DriverAgents-Index.json"
base = Path("drivers")
out_path = Path(out_name)
index_path = Path(index_name)
driver_release_dir = Path("../driver-release-assets")
if driver_release_dir.exists():
shutil.rmtree(driver_release_dir)
driver_release_dir.mkdir(parents=True, exist_ok=True)
out_path = driver_release_dir / out_name
index_path = driver_release_dir / index_name
if out_path.exists():
out_path.unlink()
if index_path.exists():
@@ -597,7 +601,7 @@ jobs:
raise RuntimeError(f"driver asset name conflict: {p.name}")
zf.write(p, arcname)
size_index[p.name] = p.stat().st_size
standalone_path = Path(p.name)
standalone_path = driver_release_dir / p.name
if standalone_path.exists():
raise RuntimeError(f"release asset already exists: {standalone_path}")
shutil.copy2(p, standalone_path)
@@ -632,6 +636,22 @@ jobs:
sha256sum "${FILES[@]}" > SHA256SUMS
fi
- name: Generate Driver SHA256SUMS
shell: bash
run: |
cd driver-release-assets
FILES=()
while IFS= read -r file; do
if [ -n "$file" ]; then
FILES+=("$file")
fi
done < <(find . -maxdepth 1 -type f ! -name SHA256SUMS -exec basename {} \; | sort)
if [ ${#FILES[@]} -eq 0 ]; then
echo "❌ 未找到驱动发布资产"
exit 1
fi
sha256sum "${FILES[@]}" > SHA256SUMS
- name: Generate Dev Version
id: version
run: |
@@ -697,6 +717,68 @@ jobs:
}
}
- name: Reset Previous Driver Dev Release
uses: actions/github-script@v7
with:
github-token: ${{ secrets.DRIVER_RELEASE_TOKEN }}
script: |
const tag = 'dev-latest';
const ref = `tags/${tag}`;
const [owner, repo] = 'Syngnat/GoNavi-DriverAgents'.split('/');
const releases = await github.paginate(github.rest.repos.listReleases, {
owner,
repo,
per_page: 100,
});
const matchedReleases = releases.filter((release) => release.tag_name === tag);
if (matchedReleases.length === 0) {
core.info(`No existing driver releases found for tag ${tag}`);
} else {
for (const release of matchedReleases) {
core.info(`Deleting driver release ${release.id} (${release.name || 'unnamed'}) for tag ${tag}`);
await github.rest.repos.deleteRelease({
owner,
repo,
release_id: release.id,
});
}
}
try {
await github.rest.git.deleteRef({
owner,
repo,
ref,
});
core.info(`Deleted driver ref ${ref}`);
} catch (error) {
if (error.status === 404) {
core.info(`No existing driver ref found for ${ref}`);
} else {
throw error;
}
}
- name: Create Dev Driver Agents Pre-release
uses: softprops/action-gh-release@v2
with:
repository: Syngnat/GoNavi-DriverAgents
tag_name: dev-latest
name: "GoNavi Driver Agents (${{ steps.version.outputs.version }})"
files: driver-release-assets/*
fail_on_unmatched_files: true
prerelease: true
draft: false
make_latest: false
body: |
GoNavi dev driver-agent assets.
**版本**: `${{ steps.version.outputs.version }}`
**来源仓库**: `${{ github.repository }}`
**提交**: [`${{ github.sha }}`](${{ github.server_url }}/${{ github.repository }}/commit/${{ github.sha }})
token: ${{ secrets.DRIVER_RELEASE_TOKEN }}
- name: Create Dev Pre-release
uses: softprops/action-gh-release@v2
with:

View File

@@ -620,8 +620,12 @@ jobs:
out_name = "GoNavi-DriverAgents.zip"
index_name = "GoNavi-DriverAgents-Index.json"
base = Path("drivers")
out_path = Path(out_name)
index_path = Path(index_name)
driver_release_dir = Path("../driver-release-assets")
if driver_release_dir.exists():
shutil.rmtree(driver_release_dir)
driver_release_dir.mkdir(parents=True, exist_ok=True)
out_path = driver_release_dir / out_name
index_path = driver_release_dir / index_name
if out_path.exists():
out_path.unlink()
if index_path.exists():
@@ -638,7 +642,7 @@ jobs:
raise RuntimeError(f"driver asset name conflict: {p.name}")
zf.write(p, arcname)
size_index[p.name] = p.stat().st_size
standalone_path = Path(p.name)
standalone_path = driver_release_dir / p.name
if standalone_path.exists():
raise RuntimeError(f"release asset already exists: {standalone_path}")
shutil.copy2(p, standalone_path)
@@ -654,7 +658,7 @@ jobs:
print(f"published standalone driver assets={len(standalone_assets)}")
PY
# Release 同时发布单驱动资产与总包:应用优先下载单驱动,失败后仍可用总包兜底
# GoNavi 主仓库只保留主程序包;驱动资产发布到独立仓库
rm -rf drivers
- name: Generate SHA256SUMS
@@ -674,6 +678,36 @@ jobs:
sha256sum "${FILES[@]}" > SHA256SUMS
fi
- name: Generate Driver SHA256SUMS
shell: bash
run: |
cd driver-release-assets
FILES=()
while IFS= read -r file; do
if [ -n "$file" ]; then
FILES+=("$file")
fi
done < <(find . -maxdepth 1 -type f ! -name SHA256SUMS -exec basename {} \; | sort)
if [ ${#FILES[@]} -eq 0 ]; then
echo "❌ 未找到驱动发布资产"
exit 1
fi
sha256sum "${FILES[@]}" > SHA256SUMS
- name: Create Driver Agents Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
repository: Syngnat/GoNavi-DriverAgents
tag_name: ${{ github.ref_name }}
name: "GoNavi Driver Agents ${{ github.ref_name }}"
files: driver-release-assets/*
fail_on_unmatched_files: true
make_latest: true
body: |
GoNavi driver-agent assets for `${{ github.ref_name }}`.
token: ${{ secrets.DRIVER_RELEASE_TOKEN }}
- name: Checkout code for changelog
uses: actions/checkout@v4
with: