Azure DevOps - установите переменную сборки, используя другую переменную (вложенные / составные переменные) - PullRequest
0 голосов
/ 16 декабря 2018

В DevOps Azure у меня есть переменная конвейера "версия пакета", и я задаю ее с помощью 0.1.3$(Rev:.r)-alpha.

enter image description here

Я использую эту переменную длязамените «Версия» в файле проекта ядра .net.

В задачах сборки сборка dotnet выдаст мне эту ошибку:

enter image description here

, поэтому я предполагаю, что переменная конвейера не может использовать вложенную переменную.

Существует другой способ или другой синтаксис для этого?

[Редактировать]
Вложенные переменные должны работать.Я думаю, что ошибка заключалась в пакете dotnet, использующем автоматическое управление версиями пакета, установленное на «Использовать номер сборки», которое содержит неправильный $(rev:.r) (строчный!).

Использование пользовательской строки для версии в файле проекта VS даетшум на VS (ошибка, если файл открыт, в противном случае предупреждение), и теперь Pipeline Build дает мне ошибку при восстановлении nuget dotnet из-за неверной версии.

Я решил использовать простую чистую версию, <Version>0.1.2</Version>, что я могу выбрать и документировать.Затем я хочу найти способ прочитать его в конвейере сборки и создать пользовательскую переменную, присоединяющую редакцию сборки:
0.1.2 $ (Rev: .r) => 0.1.2.123

Это результат, который я хочу.

Я нашел это: https://marketplace.visualstudio.com/items?itemName=tmarkovski.projectversionasvariable

Я использую его с настройками по умолчанию.enter image description here

Я использую переменные, которые она создает, для создания новой переменной, "версия пакета":

enter image description here

, и я использую это в пакете nuget :

enter image description here

, но это не работает.
Получившаяся переменная по-прежнему содержит «$ (Rev: .r)», не проанализирован.

Я попытаюсь снова использовать «Автоматическое управление версиями пакетов» и создаю номер сборки в Options ...

[Редактировать 2]
Установить номер версии сборки в работавших опциях сборки конвейера.
Это не оптимальное решение, потому что номер сборки не анализируется и выглядит ужасно.

enter image description here

enter image description here

[Решение]

$(Rev:.r) недоступно за пределами Build / Options.
Я использовал $ (Build.BuildNumber) , и я могу создать составную переменную: $(Version.MajorMinor).$(Build.BuildNumber)-alpha

Build.BuildNumber оценивается в Build / Options: $(Build.DefinitionVersion)$(Rev:.r)

Version.MajorMinor создается Версия проекта как переменная сборки add-
Я не знаю, как получить тот же результат без использования стороннего компонента.

1 Ответ

0 голосов
/ 16 декабря 2018

Я рад, что мое расширение помогло, и спасибо за хороший обзор.Если вам нужен больший контроль и у вас есть немного времени, чтобы поиграть с PowerShell, вы можете легко достичь желаемого за два шага, не используя сторонние расширения.

  • Чтение и анализ файла .csproj.как XML
  • Установить переменные сборки

Вот несколько ссылок на чтение XML-файлов и работу с переменными сборки, на самом деле это довольно просто.

https://www.business.com/articles/powershell-read-xml-files/

VSTS: передать переменные сборки / выпуска в задачу скрипта Powershell

[xml]$XmlDocument = Get-Content -Path $env:project_file

echo $XmlDocument.Project.PropertyGroup.Version

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=vsts&tabs=yaml%2Cbatch

Write-Host '##vso[task.setvariable variable=package_version;issecret=true]0.1.2.'

Примечание: мой ответ не будетвписаться в комментарий, я должен был опубликовать ответ.

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