我们有这些脚本在 staging/src/k8s.io/code-generator
中,名为 "generate-groups.sh" 和 "generate-internal-groups.sh"。
想要 kube-style 代码生成(deepcopy、conversion、openapi、client 等)的外部项目调用它们。我们为 k8s.io/kube-aggregator
、 k8s.io/sample-apiserver
、 k8s.io/metrics
等内部项目模拟了这种模式(参见 hack/update-codegen.sh
以获取完整列表)。
如果你手动从例如 staging/src/k8s.io/kube-aggregator
中删除所有生成的文件,然后重新运行其自身的 update-codegen.sh
,你可能会期望所有文件都回来。你会错的。
一些 (prerelease-lifecycle) 在 "generate-groups" 中没有支持。
特别是 openapi,很奇怪。在 .../kube-aggregator/pkg/generated/openapi/zz_generated.openapi.go
中有生成的 openapi 文件,但 .../kube-aggregator/hack/update-codegen.sh
没有要求 openapi 生成。它被 k/k/hack/update-codegen.sh
中的 (非常扭曲的) openapi 逻辑所覆盖。
如果你将 openapi 添加到 .../kube-aggregator/hck/update-codegen
中,它会生成一个等效的文件,但在不同的地方!结果是 .../kube-aggregator/pkg/client/openapi
而不是 .../kube-aggregator/pkg/generated/openapi
。
为什么?因为调用 generate-internal-groups.sh
传递了一个 "output dir" 为 .../pkg/client
,所以显然输出会在那里。
一个简单的修复方法只是从 .../pkg/client
中消耗 openapi,但很明显 openapi 应该在一个 "client" 目录中。
一个更复杂的修复方法是分解并替换或消除这些 "generate-groups" 脚本,这些脚本证明有些脆弱且难以维护。我们可以保留它们供外部客户端使用,但提供更好的替代方案,也许。
使子项目脚本处理 openapi 的好处是,可以在 k/k/hack/update-codegen.sh
中的 (再次,非常扭曲的) openapi 逻辑被移除。那将很好。
我现在没有时间解决这个问题,所以我把它留作“损坏”状态并提交这个 bug,希望有人有更好的上下文能提出意见。
@liggitt@sttts
5条答案
按热度按时间nkkqxpd91#
/triage accepted
dphi5xsq2#
这个问题已经超过一年没有更新了,应该重新进行优先级评估。
你可以:
/triage accepted
(仅组织成员)相关/close
关闭这个问题有关优先级评估过程的更多详细信息,请参见 https://www.kubernetes.dev/docs/guide/issue-triage/
已接受移除优先级评估
ars1skjm3#
错误的按钮,抱歉。
g52tjvyc4#
/triage accepted
2o7dmzc55#
自从go workspaces上线以来,我手动删除了kube-aggregator中的所有"不要编辑"文件,并重新运行了更新脚本。现在剩下的是: