我更喜欢在 Repo[dev|test|prod] -> Artifact Name -> Releases Artifacts go here -> Pre-Releases 进入子文件夹的层次结构中组织 Artifactory 中的工件。
为什么?因此,当我浏览 Artifactory Repository Browser 时,我没有一棵非常长的树。我可以展开存储库并按工件名称查看第一级,但仍然看不到任何工件,然后展开工件名称叶子,然后查看我发布的工件。但是,下面的顶部项目将是一个名为“prerelease”的子目录文件夹。这样做是为了让我可以轻松地手动删除我的所有预发布,如果我想在一个操作中这样做,或者计划清理它们。
[My Repo]
|
+-\prerelease\
| |--artifact-1.2.3-ci0004.nupkg
| |--artifact-1.0.1-ci0002.nupkg
|--artifact-1.0.0.nupkg
|--artifact-1.0.1.nupkg
我知道如何使用 Artifactory 文件规范将包上传到我的存储库:
** For Pre-Release
{
"files": [
{
"pattern": "$(build.artifactstagingdirectory)\*.nupkg",
"target": "myrepo-nuget-dev-local/$(PackageName)/prerelease/"
}
]
}
** For Release
{
"files": [
{
"pattern": "$(build.artifactstagingdirectory)\*.nupkg",
"target": "myrepo-nuget-dev-local/$(PackageName)/"
}
]
}
我需要做的是将每个文件规范放入其自己的构建步骤中,然后添加将执行一个构建步骤或另一个构建步骤的条件,但绝不会同时执行两者。为什么?因为构建工件将永远是预发布或发布工件,但永远不会两者兼而有之。我正在使用 GitVersion 和 Git Tags 以及 Azure DevOps。
所以问题是:自定义条件需要什么才能使其正常工作?