Я предпочитаю упорядочивать свои артефакты в 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 Tags вместе с Azure DevOps.
Итак, вопрос: каким должно быть пользовательское условие, чтобы это работало?