.net 在Docker映像中使用“dotnet”测试Nuget Auth凭据

.net 在Docker映像中使用“dotnet”测试Nuget Auth凭据,.net,docker,nuget,.net,Docker,Nuget,如果提供的凭据无效,我正在寻找一种安全而直接的方法来失败我的映像构建。问题是,我需要从中提取包的repo有一个策略,该策略在多次失败的尝试后锁定帐户——而且由于每个包都算作单独的身份验证尝试,一次错误的构建尝试将锁定帐户 在我的Dockerfile中,我像这样设置nuget源代码,然后像这样恢复(或发布/运行,等等) 理想的解决方案有两种: dotnet restore的标志,如果任何包无法恢复,该标志将立即以非零代码退出,例如dotnet restore--failfast 一个单一、安全、幂

如果提供的凭据无效,我正在寻找一种安全而直接的方法来失败我的映像构建。问题是,我需要从中提取包的repo有一个策略,该策略在多次失败的尝试后锁定帐户——而且由于每个包都算作单独的身份验证尝试,一次错误的构建尝试将锁定帐户

在我的
Dockerfile
中,我像这样设置nuget源代码,然后像这样恢复(或发布/运行,等等)

理想的解决方案有两种:

  • dotnet restore
    的标志,如果任何包无法恢复,该标志将立即以非零代码退出,例如
    dotnet restore--failfast
  • 一个单一、安全、幂等的命令,用于使用当前凭据进行身份验证,如果凭据不起作用,则退出非零
  • 这看起来有点老套,但我建议采用这种方法

    您只需创建一个测试C#项目,从您的私有存储库中引用一个包

    然后,您尝试通过
    dotnet
    CLI还原它

    如果您的凭据无效,它将失败,将有一个非零退出代码


  • 使用凭据配置您的NuGet源
  • 正如您所知,当您运行
    dotnet restore
    时,它使用一种特殊的机制来累积不同级别的设置:

    • 解决方案
    • 使用者
    • 计算机

    因此,当您运行此命令时,您的用户
    nuget.config
    文件将被更新

    (在Windows上,它位于那里
    %APPDATA%\NuGet\NuGet.config

    dotnet nuget添加源代码https://my-example-repo.jfrog.io/my-example/api/nuget/nuget  \
    -人工神经\
    -u${JFROG_USERNAME}\
    -p${JFROG_密码}\
    --以明文形式存储密码
    
  • 创建一个名为
    credentials test.csproj
    的测试项目文件:
  • 如果凭据有效,PowerShell中的结果将是:

    > dotnet restore .\credentials-test.csproj
      Determining projects to restore...
      Restored C:\Projects\nuget-restore-2\credentials-test.csproj (in 340 ms).
    > $LastExitCode
    0
    
    如果凭据无效或出现任何其他故障,结果将是:

    > dotnet restore .\credentials-test.csproj
      Determining projects to restore...
    <SOME ERROR MESSAGE>
    > $LastExitCode
    1 <-- Or some different non-zero exit code
    
    >dotnet还原。\credentials-test.csproj
    正在确定要恢复的项目。。。
    >$LastExitCode
    
    我不知道有这样的事。可能,您可以创建一个简单的CLI util,以编程方式检查凭据,如果凭据无效,则使用退出代码失败。为什么您的凭据无效?通常,你设置了它们,它们都很好。我不知道为什么我有有效的凭据,这就是为什么我希望能够测试它们。这是您典型的企业场景——一个团队拥有存储库,另一个团队拥有构建环境,在这里,我试图让他们连接起来,而不必总是让每个人都参与进来。创建一个只引用其中一个包的测试项目怎么样?
    dotnet restore .\credentials-test.csproj
    
    > dotnet restore .\credentials-test.csproj
      Determining projects to restore...
      Restored C:\Projects\nuget-restore-2\credentials-test.csproj (in 340 ms).
    > $LastExitCode
    0
    
    > dotnet restore .\credentials-test.csproj
      Determining projects to restore...
    <SOME ERROR MESSAGE>
    > $LastExitCode
    1 <-- Or some different non-zero exit code