Как можно автоматизировать продвижение артефакта в представление ленты в DevOps Azure? - PullRequest
0 голосов
/ 04 февраля 2019

Наш артефакт сборки - это пакет Nuget от Octopus.Когда сборка выпущена, она попадает в стадию QA, где артефакт разворачивается через Осьминога.Этот осьминог использует его непосредственно из фида Nuget Artifacts.

Если развертывание и последующие тесты пройдены успешно, мы хотим перенести артефакт в представление Release из фида Nuget Artifacts, потому что мы думаем, что это дает намдругой URL-адрес nuget, который может использоваться другим Octopus, обслуживающим следующий этап (по историческим причинам мы выделили Octopus для каждого этапа - работаем над его изменением, но это требует времени).

Мы можем продвигать вручную, но мыхочу сделать это автоматически.Как это можно сделать?

Мы тестируем его на локальной TFS 2019 RC2.

enter image description here

РЕДАКТИРОВАТЬ 1

Предлагаемый плагин, по-видимому, не устанавливается в локальной TFS 2019 RC2:

enter image description here

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Я также недавно пытался реализовать версию с использованием TFS.Я создал несколько скриптов PowerShell (адаптируя другие скрипты в Интернете) для создания версий пакетов.

https://gist.github.com/oceanexplorer/6a91930419b35c1923974af265777a5f

https://gist.github.com/oceanexplorer/35e0f26962018dc8578c745060365c15

Первый шаг - это мойконвейер сборки Я использую задачу «Обновить AssemblyInfo», чтобы установить версию сборки, которая затем внедряется в библиотеки DLL.

https://marketplace.visualstudio.com/items?itemName=sebastianlux.UpdateAssemblyInfo

Изначально я встроил вышеуказанные скрипты в свой проект, чтобы получить вещино в конечном итоге в моем конвейере выпуска у меня появляется задача, которая развертывает эти сценарии сборки с помощью задачи «Установка NuGet», которая эффективно извлекает их из канала и распаковывает их.

В конвейере выпуска у меня появляется задача«Пакет версий», который представляет собой пользовательский сценарий PowerShell, который вызывает функции, определенные в двух перечисленных выше списках, для чего нужно распаковать пакеты NuGet, созданные из конвейера сборки и помещенные в каталог артефакта, и применить правильное управление версиями кпакет и архивирует это.Я использовал следующий формат номера сборки в моем конвейере сборки:

$(version.major).$(version.minor).$(version.patch).$(Date:yyyyMMdd)$(Rev:r)-CI

1.0.0.201902051-CI

This will produce a semantic build number format of:

1.0.0-alpha.201902051

Я вызываю сценарии с помощью встроенной задачи PowerShell

##-------------------------------------------
## Import Build Scripts
##-------------------------------------------
gci -Recurse "$(System.DefaultWorkingDirectory)\scripts\*.psm1" | ForEach-Object { Import-Module $_.FullName }

##-------------------------------------------
## Version Files
##-------------------------------------------
Expand-NugetPackages -packagesDirectory "$(artifact.directory)" -Verbose
Add-VersionToAssemblies -suffix "$(Release.EnvironmentName)" -semVer "2.0" -artifactsToApplyTo "nuspec" -isRelease $(isRelease) -Verbose
Compress-NugetPackages -packagesDirectory "$(artifact.directory)" -Verbose

Затем в Push-задачу NuGet для отправки пакета

Nuget Push task Это еще один встроенный скрипт PowerShell, который устанавливает представление выпуска для фида пакетов:

##-------------------------------------------
## Import Build Scripts
##-------------------------------------------
gci -Recurse "$(System.DefaultWorkingDirectory)\scripts\*.psm1" | ForEach-Object { Import-Module $_.FullName }

##-------------------------------------------
## Set Package Quality
##-------------------------------------------
Set-PackageQuality -feedName "Libraries" -packageId $(nuget.packageId) -packageVersion $env:semanticVersion -packageQuality $(Release.EnvironmentName)
0 голосов
/ 05 февраля 2019

В соответствии с документацией по DevOps Azure задача рынка Продвижение пакета в Release Release - рекомендуемый способ выполнить это из конвейера CI / CD.

Репозиторийможно найти на Github .

enter image description here


Редактировать:

Поскольку вы на премьерес версией, которую эта задача не поддерживает.Я бы сказал, что комментарии об использовании API-интерфейса REST - это путь, по которому вам нужно будет что-то вроде скрипта powershell.

Никогда не используя REST Api для этой задачи, я не совсем уверен, как тело должно выглядеть для запроса.Тем не менее, это, похоже, задокументировано здесь .

Мое понимание объекта JSON Patch ограничено, но я думаю, вы могли бы использовать операцию replace.

{ "op": "replace", "path": "/view", "value": "@Release" }

Эта статья также может быть полезной, но я все еще не вижу ничего, что могло бы иметь отношение к идентификатору from в JsonPatchObjectопределение в документации REST Api.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...