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

How to publish only selected NuGet packages from Azure Pipeline to Artifactory?

我正在 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 以排除某些子目录,如图所示?

How to publish only selected NuGet packages from Azure Pipeline to Artifactory?

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

CLI for JFrog Artifactory-Uploading Files

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

除了使用 JFrog CLI task as suggested by another here, you also have the option of using the Artifactory Generic Upload task, right after the Artifactory NuGet task generates the artifacts. Just like the JFrog CLI task, it supports exclusions as well as many other options, but allows defining everything through file specs.