如何配置 go mod 以获得基于环境变量的 require 版本?
How to configure go mod to have a require version based on environment variable?
我有两个内部项目。
项目 1 - go.mod
文件
go github.com/company/project1
go 1.16
require github.com/company/project2 v1.1.0 // indirect
项目 2 - go.mod
文件
go github.com/company/project2
go 1.16
Project1 依赖于基于上述 go.mod 文件的 Project2。
当 Project2 跨多个环境时,它需要依赖不同版本的 Project1。
比如基于环境变量:
如果环境 = 负载
Project1 depends on 1.1.0-<ENVIRONMENT> version of Project2
如果环境=测试
Project1 depends on 1.1.0-<ENVIRONMENT>.<DATE> version of Project2
是否可以动态完成此操作而无需每次都修改 go.mod
文件?
Can this be done dynamically without modifying the go.mod file everytime ?
据我所知:您的部署过程应包括 go mod replace
(as ) 以更新 project2 依赖项,具体取决于当前的部署环境。
如果该部署涉及 git 克隆,那么您可以考虑使用内容过滤器驱动程序 (illustrated here) 在结帐时自动执行该更改。
但是如果通过 Go 完成,那么 go mod replace
更好。
注:issue 27824(go.mod
:使用环境变量进行替换)由于实现复杂,已于 2019 年关闭。
Issue 33586(go.mod
:替换语句中支持~
)仍然打开。
我有两个内部项目。
项目 1 - go.mod
文件
go github.com/company/project1
go 1.16
require github.com/company/project2 v1.1.0 // indirect
项目 2 - go.mod
文件
go github.com/company/project2
go 1.16
Project1 依赖于基于上述 go.mod 文件的 Project2。
当 Project2 跨多个环境时,它需要依赖不同版本的 Project1。
比如基于环境变量:
如果环境 = 负载
Project1 depends on 1.1.0-<ENVIRONMENT> version of Project2
如果环境=测试
Project1 depends on 1.1.0-<ENVIRONMENT>.<DATE> version of Project2
是否可以动态完成此操作而无需每次都修改 go.mod
文件?
Can this be done dynamically without modifying the go.mod file everytime ?
据我所知:您的部署过程应包括 go mod replace
(as
如果该部署涉及 git 克隆,那么您可以考虑使用内容过滤器驱动程序 (illustrated here) 在结帐时自动执行该更改。
但是如果通过 Go 完成,那么 go mod replace
更好。
注:issue 27824(go.mod
:使用环境变量进行替换)由于实现复杂,已于 2019 年关闭。
Issue 33586(go.mod
:替换语句中支持~
)仍然打开。