azure-devops - 如何在我的 Docker 构建步骤的工件页面中使用 Nuget 包?

标签 azure-devops azure-pipelines azure-pipelines-build-task

在我的 Azure Devops 项目中,在“工件”选项卡下,我有一个包 MyPackage

enter image description here

在我的构建管道中,我有以下步骤:

  - stage: Build
    displayName: "Build"
    jobs:
    - job: 
      steps:
      - task: Docker@2
        inputs:
          containerRegistry: 'TEST container registry'
          repository: 'mycontainerregistry/backend'
          command: 'buildAndPush'
          buildContext: '$(System.DefaultWorkingDirectory)'
          Dockerfile: '**/Dockerfile'
          tags: |
            $(Build.BuildId)
            latest

正在构建的 Dockerfile 是 Visual Studio 生成的标准文件:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["MyProject.API.csproj", "MyProject.API/"]
RUN dotnet restore "MyProject.API/MyProject.API.csproj"
COPY . .
WORKDIR "/src/MyProject.API"
RUN dotnet build "MyProject.API.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "MyProject.API.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyProject.API.dll"]

现在,问题出在 dotnet restore 命令上。此步骤失败,因为还原命令无法从 docker 构建上下文中找到 MyPackage nuget。如何在运行 docker build 时让 dotnet restore 找到 MyPackage

最佳答案

如果您有私有(private)提要,则需要使用 dotnet nuget add source 添加源

dotnet  nuget sources add -name "SomeName" -source https://pkgs.dev.azure.com/YourFeed/nuget/v3/index.json -username anything -password $TOKEN

要传递 System.AccessToken,您需要使用 ARG

FROM alpine

ARG TOKEN
RUN dotnet  nuget sources add -name "SomeName" -source https://pkgs.dev.azure.com/YourFeed/nuget/v3/index.json -username anything -password $TOKEN

然后在YMAL

- task: Docker@2
  inputs:
    containerRegistry: 'devopsmanual-acr'
    command: 'build'
    Dockerfile: 'stackoverflow/85-docker/DOCKERFILE'
    arguments: '--build-arg TOKEN=$(System.AccessToken)'

请将 buildAndPush 分开,因为它不允许将参数传递到两个单独的任务中。有关更多详细信息,请查看此 question .

另请确保您可以构建服务对提要设置具有贡献者角色。

关于azure-devops - 如何在我的 Docker 构建步骤的工件页面中使用 Nuget 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64983615/

相关文章:

azure-devops - Azure DevOps yaml 管道 : how to know which branch is being checked out?

azure-devops - ## [错误]在以下环境变量: BUILD_BUILDNUMBER中找不到版本号数据

azure - 取消构建时执行任务 - Azure DevOps Pipelines

azure-devops - Azure Devops - 将 YAML 脚本中的变量设置为日期时间

azure - 如何在连接字符串 Azure 发布管道中使用 Secrets - 使用 Azure 应用服务设置任务

git - 无法在代码镜头 : Unable to determine the team project collection 中看到 vsts 工作项

tfs - 尝试使用 TFS 跨平台命令行界面将任务上传到 VSO 时访问被拒绝

azure-devops - 是否可以将工作项链接到发布?

Azure Devops 管道未选择最新的 Visual Studio 版本

git - VSTS 生成关联的提交