gpt4 book ai didi

caching - Gitlab CI 和 .NET Core - 无法通过 2 阶段构建获取 nuget 缓存

转载 作者:行者123 更新时间:2023-12-05 02:17:29 35 4
gpt4 key购买 nike

我有这样的 dockerfile:

FROM microsoft/aspnetcore-build:2.0 AS build-env WORKDIR /app

# Copy csproj and restore as distinct layers
COPY *.csproj ./
COPY *.config ./
RUN dotnet restore --configfile NuGet.config
# Copy everything else and build
COPY . ./ RUN dotnet publish -c Release -o out

# Build runtime image
FROM microsoft/aspnetcore:2.0
WORKDIR /app
COPY --from=build-env /app/out .
ENV ASPNETCORE_URLS http://+:5000
ENTRYPOINT ["dotnet", "AuthService.dll"]

我无法在 Gitlab 构建上获得它。

整个 Nuget 缓存位于 ~/.nuget/packages 下的 build-env 中,但 Gitlab 不知何故看不到(我想它只检查最后一个容器。

知道怎么解决吗?由于没有 NuGet 缓存,它的构建时间很长......

最佳答案

dotnet restore 默认情况下将还原的依赖项存储在用户主目录的 .nuget/packages 目录中(/home/user1 on Linux 或 Windows 上的 C:\Users\user1)。用户的主目录超出了 GitLab 缓存的范围。这就是为什么您将无法缓存存储在 NuGet 默认目录中的依赖项的原因。

但是! dotnet restore 带有一个 --packages 选项,您可以使用该选项指定还原操作期间还原包的放置位置。如果你跑

dotnet restore --configfile NuGet.config --packages .nuget

.nuget 目录将在当前目录中创建,从而使其可用于缓存和复制操作。您甚至不必担心告诉程序恢复的依赖项的存储位置,因为该信息在恢复期间也会保存。

我创建了一个 post关于我遇到的相关问题的代码审查。您很有可能会在那里找到有值(value)的东西。

关于caching - Gitlab CI 和 .NET Core - 无法通过 2 阶段构建获取 nuget 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47722095/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com