Какой должен быть сборочный-информационный формат в GitVersion.yml - PullRequest
2 голосов
/ 26 января 2020

Мой GitVersion.yml выглядит следующим образом после того, как я выбрал глобальную конфигурацию из здесь

Но проблема в том, что это вызывает исключение, когда я запускаю gitversion

Невозможно отформатировать AssemblyInformationalVersion. Проверьте строку формата: «InformationalVersion» не является членом типа «GitVersion.SemanticVersionFormatValues» (параметр «propertyOrFieldName»)

Мне пришлось удалить 5-ю строку

сборочно-информационный -format: '{InformationalVersion}'

для исключения go.

Я попробовал следующее, но не сработало.

сборочный информационный формат: {InformationalVersion} # удалил кавычки.

Чего мне не хватает.

next-version: 0.1.0
mode: mainline
assembly-versioning-scheme: MajorMinorPatch
assembly-file-versioning-scheme: MajorMinorPatchTag
assembly-informational-format: '{InformationalVersion}'
increment: Inherit
continuous-delivery-fallback-tag: ci
tag-prefix: '[vV]'
major-version-bump-message: '\+semver:\s?(breaking|major)'
minor-version-bump-message: '\+semver:\s?(feature|minor)'
patch-version-bump-message: '\+semver:\s?(fix|patch)'
no-bump-message: '\+semver:\s?(none|skip)'
legacy-semver-padding: 4
build-metadata-padding: 4
commits-since-version-source-padding: 4
commit-message-incrementing: Enabled
commit-date-format: 'yyyy-MM-dd'
branches:
  master:
    mode: ContinuousDelivery
    tag: ''
    increment: Patch
    prevent-increment-of-merged-branch-version: true
    track-merge-target: false
    regex: ^master
    tracks-release-branches: false
    is-release-branch: false
  release:
    mode: ContinuousDelivery
    tag: beta
    increment: Patch
    prevent-increment-of-merged-branch-version: true
    track-merge-target: false
    regex: ^releases?[/-]
    tracks-release-branches: false
    is-release-branch: true
    pre-release-weight: 1000
  feature:
    mode: ContinuousDeployment
    tag: useBranchName
    increment: Inherit
    prevent-increment-of-merged-branch-version: false
    track-merge-target: false
    regex: ^features?[/-]
    tracks-release-branches: false
    is-release-branch: false
  pull-request:
    mode: ContinuousDelivery
    tag: PullRequest
    increment: Inherit
    prevent-increment-of-merged-branch-version: false
    tag-number-pattern: '[/-](?<number>\d+)[-/]'
    track-merge-target: false
    regex: ^(pull|pull\-requests|pr)[/-]
    tracks-release-branches: false
    is-release-branch: false
  hotfix:
    mode: ContinuousDelivery
    tag: beta
    increment: Patch
    prevent-increment-of-merged-branch-version: false
    track-merge-target: false
    regex: ^hotfix(es)?[/-]
    tracks-release-branches: false
    is-release-branch: false
  support:
    mode: ContinuousDelivery
    tag: ''
    increment: Patch
    prevent-increment-of-merged-branch-version: true
    track-merge-target: false
    regex: ^support[/-]
    tracks-release-branches: false
    is-release-branch: false
  develop:
    mode: ContinuousDeployment
    tag: unstable
    increment: Minor
    prevent-increment-of-merged-branch-version: false
    track-merge-target: true
    regex: ^dev(elop)?(ment)?$
    tracks-release-branches: true
    is-release-branch: false
ignore:
  sha: []
merge-message-formats: {}

1 Ответ

1 голос
/ 10 марта 2020

Итак, InformationalVersion устанавливается в соответствии с форматом, указанным assembly-informational-format. Так что, вероятно, причина ошибки.

Например, я сделал что-то вроде:

assembly-informational-format: '{MajorMinorPatch}{PreReleaseTagWithDash}+{ShortSha}'

Затем, когда я запускаю GitVersion, я получаю обратно:

"InformationalVersion":"2.0.0-convert-to-netcore.9+abc123"

Опять же, в документации неясно, какие переменные можно использовать как часть интерполяции строк, а какие переменные задаются различными полями формата.

ОБНОВЛЕНИЕ
Я заметил, что мой ответ противоречит документации GitVersion. Однако мой опыт показал мне, что установка assembly-informational-format влияет на значение InformationalVersion, хотя InformationalVersion считается переменной и может использоваться в интерполяции. Я думаю, что это может быть ошибкой в ​​документации GitVersion. Или, в лучшем случае, InformationalVersion можно использовать в качестве переменной в других форматах, но, поскольку assembly-informational-format определяет окончательное значение InformationalVersion, эту переменную нельзя использовать в значении конфигурации assembly-informational-format.

Еще одно обновление
Хорошо, я понял, что, хотя документация могла бы быть лучше, я ошибочно полагал, что GitVersion фактически делает / предоставляет. Это не волшебный c (ну, вроде как;)), он требует работы с вашей стороны.

GitVersion просто вычисляет некоторые поля версий для SemVer и выводит эти вычисления в JSON объект при запуске GitVersion.exe (при использовании исполняемого файла). GitVersion также предоставляет несколько различных общих «ma sh -ups» этих полей, например, MajorMinor, MajorMinorPatch, et c. также предоставляет несколько способов форматирования полных номеров версий, например, assembly-file-versioning-format и assembly-informational-format. Но, в конце концов, результаты всего этого выводятся в JSON объект.

Это ваша ответственность за выбор и выбор из этого JSON объекта, как построить номер вашей версии. Итак, если вы хотите использовать строку из InformationalVersion в качестве версии пакета NuGet (для каналов пакета v3), которая основана на формате, указанном в assembly-informational-format, это ваш выбор.

GitVersion предоставляет инструкции по как вы можете преобразовать этот JSON объект в переменные сборки или переменные среды, к которым можно получить доступ из процесса сборки. До вас вы можете настроить свою сборку на использование этих значений для достижения желаемой схемы управления версиями. Но GitVersion только рассчитывает номер основной / вспомогательной версии / патча и пытается помочь вам отформатировать предварительный выпуск и создать теги метаданных.

Это открытие, безусловно, помогло мне лучше понять, как настроить GitVersion и использовать его в моих процессах сборки .

...