模块缓存与可复现构建:为什么本地能过,CI 却不一定
很多构建差异问题不是代码不同,而是模块缓存、依赖来源和环境不一致。理解缓存和可复现构建后,排查会快很多。
#go-mod
#cache
#dependency-management
输入关键词开始搜索,支持单字。
查看全部结果标签
围绕这个标签整理的 Go 学习内容。
很多构建差异问题不是代码不同,而是模块缓存、依赖来源和环境不一致。理解缓存和可复现构建后,排查会快很多。
一个仓库里放多个 Go 模块不是不行,但如果边界、职责和开发方式没提前想清楚,很快就会变得难维护。
私有模块问题经常同时涉及 Git 凭据、代理、sumdb 和模块路径。把排查顺序理顺后,很多问题会变得简单。
很多 Go 模块问题不是不会改依赖,而是根本没看清当前项目到底依赖了谁。go list -m 是最直接的观察入口。
replace 很好用,但它最容易造成的工程问题,不是不会写,而是写完之后不该不该提交。
很多模块操作问题其实不是命令不会写,而是没分清 go get 和 go mod tidy 的职责边界。
理解 Go 模块里的 semantic import versioning:为什么 v2 以上版本必须写进 import path,以及它解决了什么问题。
把 Go 模块下载链路里最容易混淆的三个环境变量拆开讲清楚,理解代理、校验和私有仓库之间的边界。
把 go.mod 和 go.sum 放在一起讲清楚:一个负责描述依赖关系,一个负责校验依赖完整性。