gpt4 book ai didi

Azure Devops nuget 工件源和 docker

转载 作者:行者123 更新时间:2023-12-02 22:49:17 26 4
gpt4 key购买 nike

有没有一种好方法可以为 DevOps 创建身份验证机制,以便能够访问工件 NuGet 提要?我想为我的团队创建一个基础镜像,允许他们从我们的 Azure 容器注册表中提取一个镜像,该镜像可以访问我们的 devops nuget feed。理想情况下,人们不必在从主机构建系统获取 PAT 的每个项目中都拥有相同的 dockerfile 代码。这也将使我们能够更好地进行 CICD。

我当前的解决方案

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app

ARG IT_PAT
ENV VSS_NUGET_EXTERNAL_FEED_ENDPOINTS "{\"endpointCredentials\": [{\"endpoint\": \"https://pkgs.dev.azure.com/MNPIT/_packaging/MNP/nuget/v3/index.json\",\"username\": \"build\",\"password\": \"${IT_PAT}\"}]}"
RUN mkdir -p $HOME/.nuget/plugins
WORKDIR /deps

# Downloads and installs the NuGet credential plugin so we can login to the private NuGet feed
RUN curl https://github.com/microsoft/artifacts-credprovider/releases/download/v0.1.24/Microsoft.NetCore2.NuGet.CredentialProvider.tar.gz -L -o creds.tar.gz -s
RUN tar -xzf creds.tar.gz
RUN cp -r plugins/netcore/ ~/.nuget/plugins
  • 每个构建文件中的库存代码
  • 每个用户都使用 PAT 配置其环境变量
  • 在每个构建中通过 PAT
  • 不适用于自动构建系统

最佳答案

YAML

  1. 运行 NuGetAuthenticate 任务以将 VSS_NUGET_ACCESSTOKEN 添加到环境变量 ( more info )
  2. 将 token 作为参数传递给 Docker 任务
- task: NuGetAuthenticate@0

- task: Docker@2
displayName: 'build docker image'
inputs:
command: build
containerRegistry: 'happycodeacr'
repository: 'hc-app-sample-api-dev'
buildContext: '$(Pipeline.Workspace)/app'
Dockerfile: '$(Pipeline.Workspace)/app/src/HappyCode.Api/Dockerfile'
arguments: '--build-arg FEED_ACCESSTOKEN=$(VSS_NUGET_ACCESSTOKEN)'
tags: |
latest
$(Build.BuildId)

generate token by NuGetAuthenticate task

Dockerfile

  1. 下载并安装工件提供程序 ( more info )
  2. 接收 token
  3. 使用 Feed url 和 token 设置 VSS_NUGET_EXTERNAL_FEED_ENDPOINTS 环境变量,以进行 nuget 恢复过程
  4. 复制 NuGet.config 文件
  5. 运行dotnet Restore
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /work

RUN curl -L https://raw.githubusercontent.com/Microsoft/artifacts-credprovider/master/helpers/installcredprovider.sh | sh
ARG FEED_ACCESSTOKEN
ENV VSS_NUGET_EXTERNAL_FEED_ENDPOINTS \
"{\"endpointCredentials\": [{\"endpoint\":\"https://happycode.pkgs.visualstudio.com/_packaging/hc-nuget-feed/nuget/v3/index.json\", \"password\":\"${FEED_ACCESSTOKEN}\"}]}"
COPY ["NuGet.config", "./"]

COPY ["src/*/*.csproj", "./"]
RUN for projectFile in $(ls *.csproj); \
do \
mkdir -p ${projectFile%.*}/ && mv $projectFile ${projectFile%.*}/; \
done
RUN dotnet restore /work/HappyCode.Api/HappyCode.Api.csproj

# further instructions

consumption of token during Docker build task

关于Azure Devops nuget 工件源和 docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63158785/

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