go - How to configure go mod to have a require version based on environment variable?
问题描述
I have two internal projects.
Project1 - go.mod
file
go github.com/company/project1
go 1.16
require github.com/company/project2 v1.1.0 // indirect
Project2 - go.mod
file
go github.com/company/project2
go 1.16
Project1 is dependent on Project2 based on the above go.mod file.
When Project2 moves across multiple environments it needs to be dependent upon different version of Project1.
For instance, based on environment variable:
If ENVIRONMENT = LOAD
Project1 depends on 1.1.0-<ENVIRONMENT> version of Project2
If ENVIRONMENT = TEST
Project1 depends on 1.1.0-<ENVIRONMENT>.<DATE> version of Project2
Can this be done dynamically without modifying the go.mod
file everytime ?
解决方案
这可以在不修改 go.mod 文件的情况下动态完成吗?
我不知道:您的部署过程应该包括一个go mod replace
(如此处所示)以更新 project2 依赖项,具体取决于当前的部署环境。
如果该部署涉及 git 克隆,那么您可能会考虑内容过滤器驱动程序(此处说明)在结帐时自动执行该更改。
但如果这是通过 Go 完成的,那么 ago mod replace
会更好。
注意:由于实现的复杂性,问题 27824(go.mod
:使用环境变量进行替换)已于 2019 年关闭。
问题 33586(go.mod
:~
替换语句中的支持)仍处于打开状态。
推荐阅读
- java - 跟踪 Actor 流的内存使用情况
- arrays - Ruby Array:TypeError(没有将 Symbol 隐式转换为 Integer)
- json - 如何在 ActiveMQ 上发布 JSON 对象
- batch-file - 在 tfs build 中获取构建代理文件夹路径
- typescript - TS 错误:类型“T[]”不可分配给类型“[T]”。类型“T[]”中缺少属性“0”
- python - 在 python 2.7 中使用另一个类的装饰
- c# - 运行时 Xamarin 中的网格布局更改
- node.js - 在 node.js 和 postgres 中为循环中的每个项目添加响应
- r - 对多个绘图使用多个选项
- android - 无法解决:com.airbnb.android:lottie:2.5.1