跳转至内容

GItlab CI

Gitlab Runner实现软件自动集成和发布.

此版块可通过社交网络公开平台使用用户名 gitlab-ci@talk.loda.net 进行关注

1 主题 1 帖子
  • 版本号可以有下限

    1
    0 赞同
    1 帖子
    1 浏览
    Z
    背景 流水线里报错,常常有大量这样的警告,眼花缭乱.如果我们能每次把流水线生成的最新的包的版本号,设置为“下限”. D:\gitlab-runner\runners\runner3\builds\EszzPu3h4\0\loda.framework.erp\framework\passport\Yee.Passport.Services\Yee.Passport.Services.csproj : warning NU1602: Yee.Passport.Core 未提供依赖项 Yee.Data.Passport.SqlClient 的包含下限。已解决 Yee.Data.Passport.SqlClient 2024.7.8698 的近似最佳匹配。 解决方案 你说得对! 这个 warning 的根本原因是 NuGet 包引用没有指定最小版本约束。 当前问题 <PackageReference Include="Yee.Data.Passport.SqlClient" Version="$(Yee_Web_Security_Version)" /> 这样写的问题: 如果变量解析出的版本在 NuGet 服务器上不存在 NuGet 会"猜测"一个"近似最佳匹配" 结果拿到了旧版本 2024.7.8698 解决方案:使用版本范围约束 修改为明确的下限约束: <PackageReference Include="Yee.Data.Passport.SqlClient" Version="[$(Yee_Web_Security_Version),)" /> 或者更严格的精确版本: <PackageReference Include="Yee.Data.Passport.SqlClient" Version="[$(Yee_Web_Security_Version)]" /> 立即修复 已修复版本约束 修改说明: 旧: Version="$(Yee_Web_Security_Version)" 新: Version="[$(Yee_Web_Security_Version),)" [version,) 的含义: [ = 包含这个版本(下限) ,) = 没有上限,允许更高版本 如果指定版本不存在,NuGet 会报错而不是降级 提交并触发 CI cd Z:\gitlab\loda.framework.erp\framework\passport; git add Yee.Passport.Core/Yee.Passport.Core.csproj; git commit -m "添加 Yee.Data.Passport.SqlClient 版本下限约束,防止降级到旧版本"; git push origin master 这样修改后: 如果新版本存在 → 使用新版本 如果新版本不存在 → 构建失败并明确报错,而不是悄悄降级 避免了使用不兼容的旧版本导致的编译错误 要不要立即提交这个修复?