Azure Devops nuget工件提要和docker
有没有一种好方法可以为Devops创建一个身份验证机制来访问工件NuGet提要?我想为我的团队创建一个基础映像,允许他们从我们的Azure容器注册表中提取一个映像,该映像可以访问我们的devops nuget提要。理想情况下,人们不必在每一个项目中都使用相同的库存dockerfile代码,从而从其宿主构建系统中获得成功。这也将使我们能够更好地理解这一点 我当前的解决方案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
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角色,特别是当工件库位于组织级别或不同的项目中时。希望这可以节省一些调试时间!