如何获取 Nuke.Build Nuget 推送步骤到内部 Azure DevOps 源的 APIKey?

问题描述 投票:0回答:1

我正在尝试将

Nuke.Build
推送到 Azure DevOps 内部源。 如果我在 Azure Pipelines 中执行此操作,并添加一个发布 nuget 的步骤,它将给我一个如下步骤:

对于经典:

steps:
- task: DotNetCoreCLI@2
  displayName: 'dotnet push'
  inputs:
    command: push
    publishVstsFeed: 'faeeeeee-eeee-eeee-eeee-c48a92cb3804/2a06fd96-0000-0000-0000-643ff5710000'

对于 yaml:

  - task: NuGetCommand@2
    inputs:
      command: 'push'
      packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg'
      nuGetFeedType: 'internal'
      publishVstsFeed: 'faeeeeee-eeee-eeee-eeee-c48a92cb3804/2a06fd96-0000-0000-0000-643ff5710000'

在这两种情况下,它都依赖于用于发布到内部 NuGet Feed 的内部变量或令牌。

现在,当我从 Nuke 执行此操作时,我的发布步骤如下:

Target Publish => _ => _
    .DependsOn(Pack)
    .Executes(() =>
    {
        DotNetTasks.DotNetNuGetPush(x => x
        .SetApiKey("????")
        .SetSource("https://pkgs.dev.azure.com/company/project/_packaging/feed/nuget/v3/index.json")
        .SetTargetPath(PackagesDirectory));
    });

我从中得到:

错误:响应状态代码不表示成功:401(未经授权)。

所以需要API Key。

从哪里获取 ApiKey?必须有一种从管道导入秘密的方法,这样我就可以以非交互式方式从 Nuke.Build 中的发布步骤使用它(除了 PAT 方式)?

azure-devops api-key nuke-build nuget-push
1个回答
0
投票

希望我没有为您的问题迟到。

以下是我们在 Azure Pipeline 中发布 nuget 包的方式。

假设您正在使用 NuGetSource 和 NuGetApiKey 的参数。

    Target NugetPublish => definition => definition
        .Requires(() => NuGetApiKey, () => NuGetSource)
        .Executes(() =>
        {
            DotNetNuGetPush(pushSettings => pushSettings
                .SetSource(NuGetSource)
                .SetApiKey(NuGetApiKey)
                .EnableNoSymbols()
                .EnableSkipDuplicate()
                .CombineWith(PushPackageFiles, (settings, path) => settings
                    .SetTargetPath(path)));
        });

在我们的 Azure Pipeline 中,我像这样使用 nuke

      # this authenticates the pipeline with the azure artifacts storage
      - task: NuGetAuthenticate@1

      # feedName is the name of the feed within your nuget.config, ApiKey is static AzureDevops to tell the preauthentication should be used
      - pwsh: './build.ps1 NugetPublish --NuGetSource feedName --NuGetApiKey AzureDevops'

在 nuget.config 中定义 feed:

<add key="feedName" value="https://org.pkgs.visualstudio.com/software/_packaging/feedName/nuget/v3/index.json" />

致以诚挚的问候

© www.soinside.com 2019 - 2024. All rights reserved.