-
-
Notifications
You must be signed in to change notification settings - Fork 9.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: support validate requires version for plugin #3114
Conversation
jsemver 表达式的BNF范式是不支持 range expression 写SNAPSHOT的,所以支持SNAPSHOT应该本身就不是一个合理的操作。 开发模式下是不会验证版本的,而生产模式下也不存在 requires 需要写SNAPSHOT的情况,那么 requires 支持 SNAPSHOT 也就失去了意义。 对于
这种情况,系统版本是 SNAPSHOT 而 requires 是大于2.2.0 正式版 所以期望是 false 也没有问题,正式版就是比 SNAPSHOT 大。 |
IMO,2.2.0-SNAPSHOT 应当对待成 2.2.0,这样方便在发版前进行插件兼容性测试。 既然正式版中不会包含 SNAPSHOT,那我们如何处理 SNAPSHOT 实际上不会对正式版产生任何影响。 目前 main 分支只要有 commit,我们就会构建出一个 SNAPSHOT 镜像,如果 |
如果 systemVersion endsWith SNAPSHOT 就将其当作正式版使用吗即 2.2.0-SNAPSHOT 提升为 2.2.0 再比较。如果是在本地通过安装最新的 jar 来使用这种场景,确实需要忽略掉 SNAPSHOT |
# Conflicts: # src/main/java/run/halo/app/plugin/PluginAutoConfiguration.java
/ping @halo-dev/sig-halo |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/lgtm
但是
此 PR 中 PluginReconciler 有一些异常提示是没有加 i18n 的,主要是考虑 Reconciler 与请求不挂钩,无法获取到 request 上下文的 Locale,如果用 Locale.getDefault() 那么后续用户切换语言时也更改不到已经持久化到数据库中的错误信息,可能得靠客户端翻译异常。
不是很理解,#3042 这种方式不能使用吗?
src/main/java/run/halo/app/core/extension/endpoint/PluginEndpoint.java
Outdated
Show resolved
Hide resolved
endpoint 的异常可以国际化,reconciler 的异常不行,我描述的是 reconciler 的异常需要前端翻译比如插件启动失败,依赖版本检查未通过(升级了 halo,然后已经安装的插件版本不合适了)等。 |
Reconciler 的异常完全没必要国际化。在页面上是无法看到 Reconciler 所抛出的异常。 |
我有一个问题:检查版本的时机具体是在”安装“的时候还是在”启用“的时候呢? 如果一个旧插件(此前已经启用)不兼容新版的 Halo 了,那么该插件的状态应该是什么呢? |
对于 Halo 来说 Reconciler 会将其标记为失败的 phase,然后不会去启动它。 安装和升级的时候都会检查版本,但是升级了 Halo 后这个插件不兼容了,则 Halo 启动时 PluginReconciler 会检查版本是否兼容等启动条件满足时才会启动。 |
插件启动失败的时候是会显示启动失败原因的 |
安装和升级时校验的异常已添加国际化支持 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/lgtm
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: JohnNiang The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
What type of PR is this?
/kind feature
/area core
/milestone 2.2.x
What this PR does / why we need it:
插件安装和升级支持版本校验
BTW: 此 PR 中 PluginReconciler 有一些异常提示是没有加 i18n 的,主要是考虑 Reconciler 与请求不挂钩,无法获取到 request 上下文的 Locale,如果用 Locale.getDefault() 那么后续用户切换语言时也更改不到已经持久化到数据库中的错误信息,可能得靠客户端翻译异常。
参考文档:
Which issue(s) this PR fixes:
Fixes #3089
Special notes for your reviewer:
how to test it?
*
则表示允许所有,如果填写为具体的版本号,例如 requires: "2.2.0" 则隐式表示为>=2.2.0
。可以测试这几种情况是否符合期望。
/cc @halo-dev/sig-halo
Does this PR introduce a user-facing change?