【问题标题】:How to publish only selected NuGet packages from Azure Pipeline to Artifactory?如何仅将选定的 NuGet 包从 Azure Pipeline 发布到 Artifactory?
【发布时间】:2021-08-30 22:09:56
【问题描述】:

我在 Azure Pipeline 中使用 Azure DevOps 任务 ArtifactoryNuGet@2

我需要帮助将 NuGet 包从 Azure Devops 管道部署到 Artifactory。 (我不知道这是否有区别,但这是 Artifactory 的云实例,而不是本地实例。)

我已经阅读了这两个站点的文档:

另外,我已经查看了https://github.com/jfrog/artifactory-azure-devops-extension/blob/master/tasks/ArtifactoryNuget/Ver2/task.json中的任务参数

我已使用 ArtifactoryNuGet 成功从 Artifactory 恢复包并将包推送到 Artifactory。但是,我想微调推送包路径以排除某个目录。也就是说,我想推送在目录myproject 中找到的所有包,除了在子目录myproject/foo 中找到的包。

我有这样指定的任务:

  - task: ArtifactoryNuGet@2
   enabled: false
   inputs:
    command: 'push'
    artifactoryService: 'AzureToArtifactory'
    targetDeployRepo: 'acm-nuget-release-local'
    targetDeployPath: 'Azure_CI_Build/xyzzy/packages'
    pathToNupkg: 'myproject\**\*.nupkg;!myproject\foo\**\*.nupkg'

虽然 ArtifactoryNuget 识别双通配符“**”,但它不识别排除字符“!” ,我不知道它是否识别分号';' .

如果我只使用路径 myproject\**\*.nupkg,ArtifactoryNuGet 会找到 15 个包,其中 11 个在 foo 中,其中 4 个在其他子目录中。我只想要在别处找到的 4 个。

如果我使用上面示例中的排除路径,ArtifactoryNuGet 找不到任何包。我预计它会找到 4 个包。

如何定义pathToNupkg 以排除某些子目录,如图所示?

【问题讨论】:

    标签: azure azure-devops nuget azure-pipelines artifactory


    【解决方案1】:

    如何仅将选定的 NuGet 包从 Azure Pipeline 发布到 Artifactory?

    您可以尝试使用JFrog CLI 任务发布带有选项--exclusions 的包:

    CLI for JFrog Artifactory-Uploading Files

    jfrog rt u "myproject\**\*.nupkg" my-local-repo --exclusions="myproject\foo\**\*.nupkg*"
    

    【讨论】:

    • 谢谢,这行得通,并且完成了我需要做的事情。是我勾选的第一个答案。
    【解决方案2】:

    除了使用此处另一个人建议的JFrog CLI task,您还可以选择在Artifactory NuGet task 生成工件之后使用Artifactory Generic Upload task。就像 JFrog CLI 任务一样,它支持排除以及许多其他选项,但允许通过 file specs 定义所有内容。

    【讨论】:

      猜你喜欢
      • 2019-11-08
      • 2020-01-30
      • 1970-01-01
      • 2023-03-23
      • 2021-05-06
      • 2021-12-29
      • 1970-01-01
      • 2023-01-12
      相关资源
      最近更新 更多