Add app publishing guide (#510)

This commit is contained in:
Ryan Wang
2025-09-05 18:16:50 +08:00
committed by GitHub
parent 0accb42606
commit 1234d6c717
8 changed files with 293 additions and 177 deletions

View File

@@ -0,0 +1,136 @@
---
title: 发布应用
description: 了解如何与我们的社区分享你的主题和插件
---
了解如何与我们的社区分享你的主题和插件,下文以应用统称主题和插件。
## GitHub 托管
如果你的应用是一个开源应用,那么我们推荐将其托管在 GitHub 上,可以获得以下好处:
1. 可以利用 GitHub 的 CI/CD 功能,实现自动构建和版本发布。
2. 可以通过 GitHub 的 Issues 功能跟踪用户反馈。
3. 可以获得更多用户关注和贡献。
除此之外,我们推荐为 GitHub 仓库添加与 Halo 相关的 [Topics](https://github.com/topics),以便让更多用户找到你的应用,比如主题可以添加 [#halo-theme](https://github.com/topics/halo-theme),插件可以添加 [#halo-plugin](https://github.com/topics/halo-plugin)。
## 版本发布
当你完成了你的应用并进行充分测试后,就可以在 GitHub 上创建新的 Release其中版本规范可以参考[版本控制](#version-control)。
### 集成 CI / CD
我们为 Halo 的主题和插件提供了适用于 GitHub Action 的 CI / CD [工作流](https://github.com/halo-sigs/reusable-workflows),可以非常方便的集成到你的 GitHub 仓库中,以下是示例:
插件 CI
```yaml title=".github/workflows/ci.yaml"
name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
ci:
uses: halo-sigs/reusable-workflows/.github/workflows/plugin-ci.yaml@v3
with:
ui-path: "ui"
pnpm-version: 9
node-version: 22
java-version: 21
```
插件 CD
此工作流会在每次发布 Release 时自动执行,会自动构建插件并上传产物到 Release 的 Assets 中。
```yaml title=".github/workflows/cd.yaml"
name: CD
on:
release:
types:
- published
jobs:
cd:
uses: halo-sigs/reusable-workflows/.github/workflows/plugin-cd.yaml@v3
permissions:
contents: write
with:
pnpm-version: 9
node-version: 22
java-version: 21
skip-appstore-release: true
```
主题 CD
此工作流会在每次发布 Release 时自动执行,会自动构建主题并上传产物到 Release 的 Assets 中。
```yaml title=".github/workflows/cd.yaml"
name: CD
on:
release:
types:
- published
jobs:
cd:
uses: halo-sigs/reusable-workflows/.github/workflows/theme-cd.yaml@v3
permissions:
contents: write
with:
skip-appstore-release: true
node-version: 22
pnpm-version: 9
```
关于 CI / CD 的更多详细信息,可查阅:[halo-sigs/reusable-workflows](https://github.com/halo-sigs/reusable-workflows)
## 分享应用
为了方便让 Halo 的用户知道你的应用,可以在以下渠道分享:
1. [halo-sigs/awesome-halo](https://github.com/halo-sigs/awesome-halo):你可以向这个仓库发起一个 PR 提交你的应用信息。
2. [Halo 论坛](https://bbs.halo.run/t/plugins):你可以在 Halo 官方社区的[插件](https://bbs.halo.run/t/plugins)和[主题](https://bbs.halo.run/t/themes)板块发布你的应用。
## 发布到应用市场
Halo 的官方应用市场接受新应用的提交,但由于应用市场仅支持作者自行管理应用以及版本,还不支持自助新建应用并发布,所以发布到应用市场需要按照以下流程:
1. 向 [halo-sigs/awesome-halo](https://github.com/halo-sigs/awesome-halo) 发起一个 PR 提交应用的信息,并勾选 **上架到 Halo 应用市场**。
2. Halo 官方人员会审核你的应用信息,审核通过后会上架到应用市场。
3. 如果你需要自行管理应用以及版本,可以在 PR 描述信息中提供 [Halo 官网](https://www.halo.run/)的用户名,我们会在应用发布之后将管理权限授予你。
### 要求
在你决定上架到 Halo 应用市场前,请确保已经完成以下要求:
1. 插件必须正确设置 `plugin.yaml` 中的 logo 字段,不能是插件开发模板中默认的 Halo 图标。
2. 主题和插件的描述文件中必须正确设置 `homepage`、`issues`、`license` 字段,详细解释:
1. `homepage`:应用的主页,可以填写为 GitHub 仓库地址或者 Halo 应用市场的应用详情页地址。
2. `issues`:应用的反馈地址,可以填写为 GitHub 仓库的 issues 地址。
3. `license`:应用的发行许可证。
3. 应用必须编写介绍和使用文档。
4. 应用如果是基于其他程序开发的,需要保证许可证兼容。
### 自动发布
当你有了应用的管理权限之后,你可以修改上述 CI / CD 工作流,以实现在 GitHub 发布 Release 之后自动同步到应用市场,以下是具体步骤:
1. 移除 `skip-appstore-release: true` 配置,或者设置为 `false`。
2. 在 `with` 中添加 `app-id` 配置,值为应用市场的应用 ID。
3. 在 Halo 官网的个人中心创建一个新的[个人令牌](https://www.halo.run/uc/profile?tab=pat),勾选 **应用市场开发者 > 版本管理**。
4. 在 GitHub 仓库的设置 -> `Secrets and variables` 中新建一个 Secret名称为 `HALO_PAT`,值为你在 Halo 官网创建的个人令牌。
## 版本控制 {#version-control}
为了保持 Halo 生态系统的健康、可靠和安全,每次你对自己拥有的应用进行重大更新时,我们建议在遵循 [semantic versioning spec](http://semver.org/) 的基础上发布新版本。遵循语义版本控制规范有助于其他依赖你代码的开发人员了解给定版本的更改程度,并在必要时调整自己的代码。

View File

@@ -328,4 +328,4 @@ jobs:
API 模块和插件模块的版本应该保持一致以确保插件在不同环境中的一致性
版本的发布应该遵循 [插件语义化版本规范](../publish.md#version-control)以确保插件的版本号能够清晰地表达插件的变化和向后兼容性
版本的发布应该遵循 [语义化版本规范](../../appendix/publish-app.md#version-control)以确保插件的版本号能够清晰地表达插件的变化和向后兼容性

View File

@@ -1,85 +0,0 @@
---
title: 发布插件
description: 了解如何与我们的社区分享你的插件
---
了解如何与我们的社区分享你的插件。
## 创建 Release
当你完成了你的插件并进行充分测试后,就可以在 GitHub 上创建新的 Release其中版本规范可以参考[版本控制](#version-control)。
## 自动构建
如果你是使用 [halo-dev/create-halo-plugin](https://github.com/halo-dev/create-halo-plugin) 创建的插件项目,那么已经包含了适用于 GitHub Action 的 `ci.yaml``cd.yaml` 文件,里面包含了构建插件和发布插件资源到 Release 的步骤,可以根据自己的实际需要进行修改,以下是示例:
```yaml
name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
ci:
uses: halo-sigs/reusable-workflows/.github/workflows/plugin-ci.yaml@v3
with:
ui-path: "ui"
pnpm-version: 9
node-version: 22
java-version: 21
```
```yaml
name: CD
on:
release:
types:
- published
jobs:
cd:
uses: halo-sigs/reusable-workflows/.github/workflows/plugin-cd.yaml@v3
permissions:
contents: write
with:
pnpm-version: 9
node-version: 22
java-version: 21
skip-appstore-release: true
```
关于 CI / CD 的更多详细信息,可查阅:[halo-sigs/reusable-workflows](https://github.com/halo-sigs/reusable-workflows)
## 发布你的插件
用户可以在你的仓库 Release 下载使用,但为了方便让 Halo 的用户知道你的插件,可以在以下渠道发布:
1. [halo-sigs/awesome-halo](https://github.com/halo-sigs/awesome-halo):你可以向这个仓库发起一个 PR 提交的插件的信息即可。
2. [Halo 应用市场](https://www.halo.run/store/apps)Halo 官方的应用市场,但目前还不支持开发者注册和发布,如果你想发布到应用市场,可以在 PR 上说明一下,我们会暂时帮你发布。
3. [Halo 论坛](https://bbs.halo.run/t/plugins):你可以在 Halo 官方社区的插件板块发布你的插件。
## 支持
Halo 不提供对第三方应用程序的支持。作为插件的开发者你有责任帮助插件的用户解决技术问题issues
当提交插件到 [awesome-halo](https://github.com/halo-sigs/awesome-halo) 时,
你需要添加服务支持联系人Support contact。这可以是用户可以联系的电子邮件地址也可以是网站或帮助中心的链接。
## 版本控制 {#version-control}
为了保持 Halo 生态系统的健康、可靠和安全,每次你对自己拥有的插件进行重大更新时,我们建议在遵循 [semantic versioning spec](http://semver.org/) 的基础上,
发布新版本。遵循语义版本控制规范有助于其他依赖你代码的开发人员了解给定版本的更改程度,并在必要时调整自己的代码。
我们建议你的包版本从 1.0.0 开始并递增,如下:
| Code status | Stage | Rule | Example version |
| ----------------------------------------- | ------------- | -------------------------------------------- | --------------- |
| First release | New product | 从 1.0.0 开始 | 1.0.0 |
| Backward compatible bug fixes | Patch release | 增加第三位数字 | 1.0.1 |
| Backward compatible new features | Minor release | 增加中间数字并将最后一位重置为零 | 1.1.0 |
| Changes that break backward compatibility | Major release | 增加第一位数字并将中间和最后一位数字重置为零 | 2.0.0 |

View File

@@ -54,13 +54,13 @@ module.exports = {
type: "link",
label: "Zeabur 一键部署",
href: "https://zeabur.com/docs/zh-CN/marketplace/halo",
description: "在 Zeabur 一键部署 Halo 服务"
description: "在 Zeabur 一键部署 Halo 服务",
},
{
type: "link",
label: "Rainbond 一键部署",
href: "https://hub.grapps.cn/marketplace/apps/1255",
description: "在 Rainbond 一键部署 Halo 服务"
description: "在 Rainbond 一键部署 Halo 服务",
},
],
},
@@ -144,7 +144,6 @@ module.exports = {
"developer-guide/plugin/introduction",
"developer-guide/plugin/prepare",
"developer-guide/plugin/hello-world",
"developer-guide/plugin/publish",
{
type: "category",
label: "基础",
@@ -415,5 +414,13 @@ module.exports = {
},
"developer-guide/form-schema",
"developer-guide/annotations-form",
{
type: "category",
label: "附录",
link: {
type: "generated-index",
},
items: ["developer-guide/appendix/publish-app"],
},
],
};

View File

@@ -0,0 +1,136 @@
---
title: 发布应用
description: 了解如何与我们的社区分享你的主题和插件
---
了解如何与我们的社区分享你的主题和插件,下文以应用统称主题和插件。
## GitHub 托管
如果你的应用是一个开源应用,那么我们推荐将其托管在 GitHub 上,可以获得以下好处:
1. 可以利用 GitHub 的 CI/CD 功能,实现自动构建和版本发布。
2. 可以通过 GitHub 的 Issues 功能跟踪用户反馈。
3. 可以获得更多用户关注和贡献。
除此之外,我们推荐为 GitHub 仓库添加与 Halo 相关的 [Topics](https://github.com/topics),以便让更多用户找到你的应用,比如主题可以添加 [#halo-theme](https://github.com/topics/halo-theme),插件可以添加 [#halo-plugin](https://github.com/topics/halo-plugin)。
## 版本发布
当你完成了你的应用并进行充分测试后,就可以在 GitHub 上创建新的 Release其中版本规范可以参考[版本控制](#version-control)。
### 集成 CI / CD
我们为 Halo 的主题和插件提供了适用于 GitHub Action 的 CI / CD [工作流](https://github.com/halo-sigs/reusable-workflows),可以非常方便的集成到你的 GitHub 仓库中,以下是示例:
插件 CI
```yaml title=".github/workflows/ci.yaml"
name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
ci:
uses: halo-sigs/reusable-workflows/.github/workflows/plugin-ci.yaml@v3
with:
ui-path: "ui"
pnpm-version: 9
node-version: 22
java-version: 21
```
插件 CD
此工作流会在每次发布 Release 时自动执行,会自动构建插件并上传产物到 Release 的 Assets 中。
```yaml title=".github/workflows/cd.yaml"
name: CD
on:
release:
types:
- published
jobs:
cd:
uses: halo-sigs/reusable-workflows/.github/workflows/plugin-cd.yaml@v3
permissions:
contents: write
with:
pnpm-version: 9
node-version: 22
java-version: 21
skip-appstore-release: true
```
主题 CD
此工作流会在每次发布 Release 时自动执行,会自动构建主题并上传产物到 Release 的 Assets 中。
```yaml title=".github/workflows/cd.yaml"
name: CD
on:
release:
types:
- published
jobs:
cd:
uses: halo-sigs/reusable-workflows/.github/workflows/theme-cd.yaml@v3
permissions:
contents: write
with:
skip-appstore-release: true
node-version: 22
pnpm-version: 9
```
关于 CI / CD 的更多详细信息,可查阅:[halo-sigs/reusable-workflows](https://github.com/halo-sigs/reusable-workflows)
## 分享应用
为了方便让 Halo 的用户知道你的应用,可以在以下渠道分享:
1. [halo-sigs/awesome-halo](https://github.com/halo-sigs/awesome-halo):你可以向这个仓库发起一个 PR 提交你的应用信息。
2. [Halo 论坛](https://bbs.halo.run/t/plugins):你可以在 Halo 官方社区的[插件](https://bbs.halo.run/t/plugins)和[主题](https://bbs.halo.run/t/themes)板块发布你的应用。
## 发布到应用市场
Halo 的官方应用市场接受新应用的提交,但由于应用市场仅支持作者自行管理应用以及版本,还不支持自助新建应用并发布,所以发布到应用市场需要按照以下流程:
1. 向 [halo-sigs/awesome-halo](https://github.com/halo-sigs/awesome-halo) 发起一个 PR 提交应用的信息,并勾选 **上架到 Halo 应用市场**。
2. Halo 官方人员会审核你的应用信息,审核通过后会上架到应用市场。
3. 如果你需要自行管理应用以及版本,可以在 PR 描述信息中提供 [Halo 官网](https://www.halo.run/)的用户名,我们会在应用发布之后将管理权限授予你。
### 要求
在你决定上架到 Halo 应用市场前,请确保已经完成以下要求:
1. 插件必须正确设置 `plugin.yaml` 中的 logo 字段,不能是插件开发模板中默认的 Halo 图标。
2. 主题和插件的描述文件中必须正确设置 `homepage`、`issues`、`license` 字段,详细解释:
1. `homepage`:应用的主页,可以填写为 GitHub 仓库地址或者 Halo 应用市场的应用详情页地址。
2. `issues`:应用的反馈地址,可以填写为 GitHub 仓库的 issues 地址。
3. `license`:应用的发行许可证。
3. 应用必须编写介绍和使用文档。
4. 应用如果是基于其他程序开发的,需要保证许可证兼容。
### 自动发布
当你有了应用的管理权限之后,你可以修改上述 CI / CD 工作流,以实现在 GitHub 发布 Release 之后自动同步到应用市场,以下是具体步骤:
1. 移除 `skip-appstore-release: true` 配置,或者设置为 `false`。
2. 在 `with` 中添加 `app-id` 配置,值为应用市场的应用 ID。
3. 在 Halo 官网的个人中心创建一个新的[个人令牌](https://www.halo.run/uc/profile?tab=pat),勾选 **应用市场开发者 > 版本管理**。
4. 在 GitHub 仓库的设置 -> `Secrets and variables` 中新建一个 Secret名称为 `HALO_PAT`,值为你在 Halo 官网创建的个人令牌。
## 版本控制 {#version-control}
为了保持 Halo 生态系统的健康、可靠和安全,每次你对自己拥有的应用进行重大更新时,我们建议在遵循 [semantic versioning spec](http://semver.org/) 的基础上发布新版本。遵循语义版本控制规范有助于其他依赖你代码的开发人员了解给定版本的更改程度,并在必要时调整自己的代码。

View File

@@ -328,4 +328,4 @@ jobs:
API 模块和插件模块的版本应该保持一致以确保插件在不同环境中的一致性
版本的发布应该遵循 [插件语义化版本规范](../publish.md#version-control)以确保插件的版本号能够清晰地表达插件的变化和向后兼容性
版本的发布应该遵循 [语义化版本规范](../../appendix/publish-app.md#version-control)以确保插件的版本号能够清晰地表达插件的变化和向后兼容性

View File

@@ -1,85 +0,0 @@
---
title: 发布插件
description: 了解如何与我们的社区分享你的插件
---
了解如何与我们的社区分享你的插件。
## 创建 Release
当你完成了你的插件并进行充分测试后,就可以在 GitHub 上创建新的 Release其中版本规范可以参考[版本控制](#version-control)。
## 自动构建
如果你是使用 [halo-dev/create-halo-plugin](https://github.com/halo-dev/create-halo-plugin) 创建的插件项目,那么已经包含了适用于 GitHub Action 的 `ci.yaml``cd.yaml` 文件,里面包含了构建插件和发布插件资源到 Release 的步骤,可以根据自己的实际需要进行修改,以下是示例:
```yaml
name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
ci:
uses: halo-sigs/reusable-workflows/.github/workflows/plugin-ci.yaml@v3
with:
ui-path: "ui"
pnpm-version: 9
node-version: 22
java-version: 21
```
```yaml
name: CD
on:
release:
types:
- published
jobs:
cd:
uses: halo-sigs/reusable-workflows/.github/workflows/plugin-cd.yaml@v3
permissions:
contents: write
with:
pnpm-version: 9
node-version: 22
java-version: 21
skip-appstore-release: true
```
关于 CI / CD 的更多详细信息,可查阅:[halo-sigs/reusable-workflows](https://github.com/halo-sigs/reusable-workflows)
## 发布你的插件
用户可以在你的仓库 Release 下载使用,但为了方便让 Halo 的用户知道你的插件,可以在以下渠道发布:
1. [halo-sigs/awesome-halo](https://github.com/halo-sigs/awesome-halo):你可以向这个仓库发起一个 PR 提交的插件的信息即可。
2. [Halo 应用市场](https://www.halo.run/store/apps)Halo 官方的应用市场,但目前还不支持开发者注册和发布,如果你想发布到应用市场,可以在 PR 上说明一下,我们会暂时帮你发布。
3. [Halo 论坛](https://bbs.halo.run/t/plugins):你可以在 Halo 官方社区的插件板块发布你的插件。
## 支持
Halo 不提供对第三方应用程序的支持。作为插件的开发者你有责任帮助插件的用户解决技术问题issues
当提交插件到 [awesome-halo](https://github.com/halo-sigs/awesome-halo) 时,
你需要添加服务支持联系人Support contact。这可以是用户可以联系的电子邮件地址也可以是网站或帮助中心的链接。
## 版本控制 {#version-control}
为了保持 Halo 生态系统的健康、可靠和安全,每次你对自己拥有的插件进行重大更新时,我们建议在遵循 [semantic versioning spec](http://semver.org/) 的基础上,
发布新版本。遵循语义版本控制规范有助于其他依赖你代码的开发人员了解给定版本的更改程度,并在必要时调整自己的代码。
我们建议你的包版本从 1.0.0 开始并递增,如下:
| Code status | Stage | Rule | Example version |
| ----------------------------------------- | ------------- | -------------------------------------------- | --------------- |
| First release | New product | 从 1.0.0 开始 | 1.0.0 |
| Backward compatible bug fixes | Patch release | 增加第三位数字 | 1.0.1 |
| Backward compatible new features | Minor release | 增加中间数字并将最后一位重置为零 | 1.1.0 |
| Changes that break backward compatibility | Major release | 增加第一位数字并将中间和最后一位数字重置为零 | 2.0.0 |

View File

@@ -123,7 +123,6 @@
"developer-guide/plugin/introduction",
"developer-guide/plugin/prepare",
"developer-guide/plugin/hello-world",
"developer-guide/plugin/publish",
{
"type": "category",
"label": "基础",
@@ -392,6 +391,14 @@
]
},
"developer-guide/form-schema",
"developer-guide/annotations-form"
"developer-guide/annotations-form",
{
"type": "category",
"label": "附录",
"link": {
"type": "generated-index"
},
"items": ["developer-guide/appendix/publish-app"]
}
]
}