Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure Devops nuget工件提要和docker_Azure_Docker_Azure Devops_Nuget_Dockerfile - Fatal编程技术网

Azure Devops nuget工件提要和docker

Azure Devops nuget工件提要和docker,azure,docker,azure-devops,nuget,dockerfile,Azure,Docker,Azure Devops,Nuget,Dockerfile,有没有一种好方法可以为Devops创建一个身份验证机制来访问工件NuGet提要?我想为我的团队创建一个基础映像,允许他们从我们的Azure容器注册表中提取一个映像,该映像可以访问我们的devops nuget提要。理想情况下,人们不必在每一个项目中都使用相同的库存dockerfile代码,从而从其宿主构建系统中获得成功。这也将使我们能够更好地理解这一点 我当前的解决方案 FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env WORKDIR

有没有一种好方法可以为Devops创建一个身份验证机制来访问工件NuGet提要?我想为我的团队创建一个基础映像,允许他们从我们的Azure容器注册表中提取一个映像,该映像可以访问我们的devops nuget提要。理想情况下,人们不必在每一个项目中都使用相同的库存dockerfile代码,从而从其宿主构建系统中获得成功。这也将使我们能够更好地理解这一点

我当前的解决方案

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配置其环境变量 对每一个建筑都要拍拍 不适用于自动生成系统 我想为我的团队创建一个基础映像,允许他们从我们的Azure容器注册表中提取一个映像,该映像可以访问我们的devops nuget提要

您可以在映像中包含凭据以实现此目的,但出于安全考虑,您最好添加一些额外的步骤或代码以从映像外部传递凭据

基于您当前的解决方案,您可以使用$System.AccessToken在azure devops CICD管道中获取安全令牌。然后在docker build任务中,将访问令牌作为参数传递给参数IT_PAT

-build arg IT_PAT=$System.AccessToken

除了使用NuGet凭据插件外,还可以使用dotnet cli向NuGet源添加凭据。然后在构建参数中传递$System.AccessToken。见下文:

ARG PAT
COPY . .
RUN dotnet nuget add source "your-source-url" --name "source-name" --username "useless" --password "$PAT" --store-password-in-clear-text
RUN dotnet restore
另一个解决方法是在构建上下文中包含nuget.config。但是您需要首先包含一个不带凭据的nuget.config文件,然后添加一个额外的来将凭据添加到配置文件中。然后将nuget.config复制到docker文件中。见下文:

ARG PAT
COPY . .
RUN dotnet nuget add source "your-source-url" --name "source-name" --username "useless" --password "$PAT" --store-password-in-clear-text
RUN dotnet restore
在自定义命令下面添加要运行的nuget任务,以将凭据添加到nuget.config文件

sources Add -Name "MyPackages" -Source "https://my.pkgs.visualstudio.com/_packaging/MyPackages/nuget/v3/index.json" -username any -password $(System.AccessToken) -ConfigFile Source/Nuget.config -StorePasswordInClearText
复制docker文件中的nuget.config,不要忘记在恢复完成时删除nuget.config文件:

COPY *.csproj .
COPY ./nuget.config .
RUN dotnet restore
RUN rm nuget.config
如果您使用的是基于Yaml的管道。你也可以退房。然后通过设置。然后,您可以直接使用管道中的恢复任务。请参见下面的示例,nuget restore任务将在您的私有容器中运行,它可以通过为您的nuget提要指定属性vstsFeed直接访问您的azure提要:

在管道中指定容器时,代理将首先获取并启动容器。然后,作业的每个步骤都将在容器内运行

有关更多信息,请查看

我想为我的团队创建一个基础映像,允许他们从我们的Azure容器注册表中提取一个映像,该映像可以访问我们的devops nuget提要

您可以在映像中包含凭据以实现此目的,但出于安全考虑,您最好添加一些额外的步骤或代码以从映像外部传递凭据

基于您当前的解决方案,您可以使用$System.AccessToken在azure devops CICD管道中获取安全令牌。然后在docker build任务中,将访问令牌作为参数传递给参数IT_PAT

-build arg IT_PAT=$System.AccessToken

除了使用NuGet凭据插件外,还可以使用dotnet cli向NuGet源添加凭据。然后在构建参数中传递$System.AccessToken。见下文:

ARG PAT
COPY . .
RUN dotnet nuget add source "your-source-url" --name "source-name" --username "useless" --password "$PAT" --store-password-in-clear-text
RUN dotnet restore
另一个解决方法是在构建上下文中包含nuget.config。但是您需要首先包含一个不带凭据的nuget.config文件,然后添加一个额外的来将凭据添加到配置文件中。然后将nuget.config复制到docker文件中。见下文:

ARG PAT
COPY . .
RUN dotnet nuget add source "your-source-url" --name "source-name" --username "useless" --password "$PAT" --store-password-in-clear-text
RUN dotnet restore
在自定义命令下面添加要运行的nuget任务,以将凭据添加到nuget.config文件

sources Add -Name "MyPackages" -Source "https://my.pkgs.visualstudio.com/_packaging/MyPackages/nuget/v3/index.json" -username any -password $(System.AccessToken) -ConfigFile Source/Nuget.config -StorePasswordInClearText
复制docker文件中的nuget.config,不要忘记在恢复完成时删除nuget.config文件:

COPY *.csproj .
COPY ./nuget.config .
RUN dotnet restore
RUN rm nuget.config
如果您使用的是基于Yaml的管道。你也可以退房。然后通过设置。然后,您可以直接使用管道中的恢复任务。请参见下面的示例,nuget restore任务将在您的私有容器中运行,它可以通过为您的nuget提要指定属性vstsFeed直接访问您的azure提要:

在管道中指定容器时,代理将首先获取并启动容器。然后,作业的每个步骤都将在容器内运行

有关更多信息,请查看。

YAML 运行NuGetAuthenticate任务将VSS\u NUGET\u ACCESSTOKEN添加到环境变量 将令牌作为参数传递给Docker任务 -任务:NuGetAuthenticate@0 -任务:Docker@2 displayName:“生成docker映像” 投入: 命令:build containerRegistry:“happycodeacr” 存储库:“hc应用程序示例api开发” buildContext:“$Pipeline.Workspace/app” Dockerfile:“$Pipeline.Workspace/app/src/HappyCode.Api/Dockerfile” 参数:'-build arg FEED_ACCESSTOKEN=$VSS\u NUGET\u ACCESSTOKEN' 标签:| 最近的 $Build.BuildId Dockerfile 下载并安装工件提供程序 接收令牌 为NUGET还原进程设置VSS_NUGET_外部_FEED_ENDPOINTS环境变量,该变量带有提要url和令牌 复制NuGet.config文件 运行dotnet还原 亚马尔 运行NuGetAuthenticate任务将VSS\u NUGET\u ACCESSTOKEN添加到环境变量 将令牌作为参数传递给Docker任务 -任务:NuGetAuthenticate@0 -任务:Docker@2 displayName:“生成docker映像” 投入: 命令:build containerRegistry:“happycodeacr” 存储库:“hc应用程序示例api开发” buildContext:“$Pipeline.Workspace/app” Dockerfile:“$Pipeline.Workspace/app/src/HappyCode.Api/Dockerfile” 参数:'-build arg FEED_ACCESSTOKEN=$VSS\u NUGET\u ACCESSTOKEN' 标签:| 最近的 $Build.BuildId Dockerfile 下载并安装工件提供程序 接收令牌 为NUGET还原进程设置VSS_NUGET_外部_FEED_ENDPOINTS环境变量,该变量带有提要url和令牌 复制NuGet.config文件 运行dotnet还原
您好,您是否有机会查看下面的解决方法。进展如何?还没有,抱歉。转到另一个问题,但我将在下周尝试回到这个问题。我是否有机会查看下面的解决方法。进展如何?还没有,抱歉。转到另一个问题,但我将在下个星期继续讨论这个问题。Ki最初考虑使用CICD访问令牌建立这样一个系统,但因泄露敏感数据而不予考虑。我想在私人ACR里也可以。PAT可能很快就过时了,是吗?是的,这个令牌有效期为48小时,请看。我最初考虑过使用CICD访问令牌建立这样一个系统,但因为暴露敏感数据而不予考虑。我想在私人ACR里也可以。PAT可能很快就过时了,是吗?是的,此令牌有效期为48小时,请参阅。不要忘记在工件库中为构建docker容器的构建代理指定一个读卡器角色,尤其是当工件库位于组织级别或在不同的项目中时。希望这可以节省一些调试时间!不要忘记在工件库中为构建docker容器的构建代理提供一个reader角色,特别是当工件库位于组织级别或不同的项目中时。希望这可以节省一些调试时间!