在monorepo环境中发布go模块

在monorepo环境中发布go模块,go,go-modules,Go,Go Modules,假设我有一个monorepo,并且有几个单独的golang服务: root └── services ├── svc1 │   ├── go.mod │   ├── go.sum │   └── main.go └── svc2 ├── go.mod ├── go.sum └── main.go 而svc2将来将依赖于svc1。此外,还

假设我有一个monorepo,并且有几个单独的golang服务:

root    
└── services
        ├── svc1
        │   ├── go.mod
        │   ├── go.sum
        │   └── main.go
        └── svc2
            ├── go.mod
            ├── go.sum
            └── main.go
而svc2将来将依赖于svc1。此外,还要求svc1和svc2可以单独释放

有没有一种方法可以独立发布模块?go mod文档仅假设存在回购,因此它不提供这种灵活性。

它应该可以正常工作

A由存储库根(即VCS中的根目录)和模块路径(如果“存储库的根目录中未定义模块”)组成

因此,使用示例中给出的目录树,您可以添加svc1的
go.mod

  • module github.com/root/services/svc1
在svc2的
go.mod

  • module github.com/root/services/svc2

参考资料:

模块的语义版本由存储库标签决定,因此我认为您无法在同一存储库中(至少在git上)分别对每个模块进行版本设置。您可能会发现go wiki的这一部分很有帮助,我如何分别对每个模块进行版本设置?@Kintarō这个问题与您的VCS设置有关。如何对VCS中的两个模块进行版本设置?