Я предпочитаю организовывать свои артефакты в Artifactory в иерархию Repo [dev | test | prod] -> Имя артефакта -> Релизы. Артефакты идут сюда -> Предварительные релизы помещаются в подпапку.
Зачем?Поэтому, когда я перемещаюсь по браузеру Artifactory Repository, у меня нет чрезвычайно длинного дерева.Я могу развернуть хранилище и увидеть первый уровень по имени артефакта, но при этом не увидеть никаких артефактов, затем развернуть лист с именем артефакта и посмотреть мои выпущенные артефакты.Но верхним элементом под ним будет папка подкаталога с именем «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 вместе с DevOps Azure.
Итак, вопрос: каким должно быть пользовательское условие, чтобы это работало?