家庭助理自动驾驶仪
的集成、仪表板卡、主题和模板 家居助理市场, 将Marketplace安装的内容附加到每个版本。
它从存储库本身读取存储库是什么: hacs.json,
集成在 custom_components/,仪表板模块,主题或
模板。不需要配置任何内容。
用法
列表中列出了该操作 GitHub市场。
验证
向CI中添加一个作业,该作业将检出存储库并运行操作:
name: CI
on:
push:
branches: [main]
pull_request:
permissions: {}
jobs:
validate:
name: Home Assistant Marketplace
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v7
with:
persist-credentials: false
- uses: roquerodrigo/home-assistant-autopilot@v2
作业摘要列出了每项检查,并在文件中标注了每个问题 属于。
发布
发布发布后,附加其资产。与 释放自动驾驶仪 是1 在同一工作中进行更多步骤,没有结账;
jobs:
release:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- id: release
uses: roquerodrigo/release-autopilot@v1
with:
token: ${{ secrets.RELEASE_TOKEN }}
anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
- if: steps.release.outputs.released == 'true'
uses: roquerodrigo/home-assistant-autopilot@v2
with:
command: publish
tag: ${{ steps.release.outputs.tag }}
任何发布工具的工作方式都是一样的:传递已发布版本的标签。
@v2 跟在每2后面。X版本,一个突破性的改变只伴随着一个新的major
的版本。 @latest 跟踪每个版本,包括损坏的版本。呆在一起
版本,使用a的标记
释放,例如
@v2.0.0,或其提交。
| 输入 | 意义 |
|---|---|
command | validate,默认值,或 publish |
tag | 为 publish,已发布版本的标签 |
token | 默认为 GITHUB_TOKEN。 publish 需要内容写访问 |
repository | 默认为工作流的存储库 |
| 输出 | 意义 |
|---|---|
category | integration, dashboard, theme 或 template |
domain | 积分的定义域,如果它是1 |
asset | 资产的名称 publish 如有,请附呈 |
asset-url | 它的下载URL,如果有的话 |
检查什么
| 检查 | 失败的是什么? |
|---|---|
| 布局 | 否 hacs.json、多个集成或主题、一个模块或模板 hacs.json 缺少的名称、格式错误或不在其目录中的域、没有版本的清单 |
hacs.json | 否 name, zip_release 除了积分,或者没有 filename 结束在 .zip |
| 版本 | manifest.json, pyproject.toml 和 package.json 声明不同的版本 |
| 下载大小 | 大于100mib或50000个文件,或大于5mib的模板 |
| Hassfest | Home Assistant清单验证器报告的任何内容,用于集成 |
| 目录 | 任何目录检查的市场报告:品牌,主题,描述,存档和其他 |
键的 hacs.json “市场”不再是这样写的 hacs,据报为
警告。私有存储库不能进入Marketplace,所以目录检查是
跳过了这里,总结也是这么说的。
hassest和目录检查运行在由digest固定的Docker映像中
存储库保持最新。他们是 linux/amd64 因此该作业需要Linux操作系统
跑步者,比如 ubuntu-latest。
检查本身在 市场参考。
出版的内容
Marketplace安装一个已发布的版本,而对于集成,它会拒绝一个
其清单声明了另一个版本。 publish 因此当一个版本失败时
在附加任何内容之前,在标签处声明的内容与标签不同。
| 存储库 | 资产 |
|---|---|
| 集成 | 与 zip_release 在 hacs.json, zip以 filename 持有 custom_components/<domain>/ 从根本上说 |
| 指示板 | 模块,就像它在标签上一样 |
| 主题、模板 | 什么也没有:市场会从存储库中安装它们 |
zip保存在标记处跟踪的文件,通过GitHub API读取,在一个固定的 顺序和固定的时间戳,所以相同的标记总是给出相同的字节。一个资产 相同名称的文件被替换,因此可以重复运行。
释放的 download_count 变成安装计数器:如果没有资产
通过API进行的市场下载并不会被计算在内。
{ "name": "My integration", "zip_release": true, "filename": "my_integration.zip" }
GitHub行动之外
相同的检查可以在任何终端上运行 npm包,在Node 24或 稍后,使用Docker进行检查和目录检查:
GITHUB_TOKEN=... npx home-assistant-autopilot validate --repository owner/name
GITHUB_TOKEN=... npx home-assistant-autopilot publish --repository owner/name --tag v1.2.0
validate 打印报告,并在检查失败时以1退出。目录检查
阅读GitHub上的存储库 --ref默认情况下,提交已签出,所以推它
第一。 publish 将结果打印为JSON:
{"asset":"my_integration.zip","assetUrl":"https://github.com/owner/name/releases/download/v1.2.0/my_integration.zip","category":"integration","domain":"my_integration"}
| 选项 | 意义 |
|---|---|
--repository <owner/name> | GitHub上的存储库。默认为 GITHUB_REPOSITORY |
--directory <path> | validate结帐。默认为当前目录 |
--ref <commit> | validate:目录检查读取的提交 |
--tag <tag> | publish:发布的标签 |
令牌来自 GITHUB_TOKEN,或 GH_TOKEN. 该包还导出这两种内容
命令库:
import { HomeAssistantAutopilot } from 'home-assistant-autopilot'
const autopilot = new HomeAssistantAutopilot({ repository: 'owner/name', token: process.env.GITHUB_TOKEN! })
const { report } = await autopilot.validate()
const { asset } = await autopilot.publish('v1.2.0')
一个 reporter 与 group, info 和 warning 接收进度,否则
转到控制台。
支持
这个项目是建立和维护在个人时间。如果对你有用,考虑一下 赞助工作 它让开发、测试和发布持续进行。