VSTS / версия пакета автоматического увеличения Devure для Devops - PullRequest
0 голосов
/ 13 сентября 2018

Запуск основной задачи .Net для упаковки. Как я могу получить выведенную версию пакета nuget для самого Авто Приращения, в формате скажем:

1.0.0

Так что в следующий раз, когда я упакую / пушу, я бы хотел увидеть 1.0.1

Я использую переменные сборки среды с Build.BuildNumber и получаю выходные данные в момент:

20180913-.2.0 и т. Д. Хотели бы исправить более традиционную систему управления версиями

Спасибо.

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Из документов переменная Rev:.r представляет собой счетчик изменений daily build.Принятое «решение» приведет к тому, что в один день будет получена версия 1.0.12, а на следующий день будет 1.0.1.

Если вы хотите простой инкремент и уникальный semver, используйте 1.0.$(BuildID).

$(BuildID) - внутренний неизменяемый счетчик для ваших сборок, и поэтому он чище, чем $(BuildNumber).


BuildID всегда будет увеличиваться - нетсброс.Таким образом, после небольшого удара вы в конечном итоге скажете, что 1.2.123 становится 1.3.124.

Если вы хотите хорошо выполнить эту задачу, это можно сделать с помощью npm версия илианалогично, например, pubspec_version для сборок Dart или Flutter.

- script: npm version $RELEASE_TYPE

, где $RELEASE_TYPE - это переменная, которую вы можете установить на основе сборки (то есть: CI, PR и т. д.), имеющаязначение major, minor, patch, prerelease и т. д.

- script: npm version $RELEASE_TYPE
  condition: startsWith(variables['build.sourceBranch'], 'refs/head/release/')
  env:  
    releaseType: minor

Обновление: Bump Repo Version и использование в сборке (с использованием npm)

Чтобы обновить версию репо, я включил npm версию в качестве DevDependency, с его ловушкой precommit для повышения версии проекта при любом коммите.

Этот метод может быть применен к другому проектутипы, помещая их в подпапку - хотя это может привести к сложностям с требованиями ОС сервера.

Чтобы использовать эту версию в вашей сборке, добавьте эту задачу bash script , которая получает и экспортирует версиюв качестве переменной задачи:

v=`node -p "const p = require('./package.json'); p.version;"`
echo "##vso[task.setvariable variable=packageVersion]$v"

.Net Core Task только version

К сожалению, нет репо-удара.

Обходное решение 1:
jobs:
  - job: versionJob #reads version number from the source file
    steps:
      - powershell: |
          $fv = Get-Content versionFile
          Write-Host ("##vso[task.setvariable variable=versionFromFile;isOutput=true]$fv")
        displayName: 'version from file' 
        name: setVersionStep  


  - job: buildJob # consumes version number, calculates incremental number and set version using assemblyinfo.cs
    dependsOn: versionJob
    variables:
      versionFromFile: $[ dependencies.versionJob.outputs['setVersionStep.versionFromFile'] ] # please note that spaces required between $[ and dependencies
      buildIncrementalNumber: $[ counter(dependencies.versionJob.outputs['setVersionStep.versionFromFile'],1) ] #can't use $versionFromFile here


    steps:
      - powershell: |
          Write-Host ($env:versionFromFile)
          Write-Host ($env:versionFromFile + '.' + $env:buildIncrementalNumber)
        displayName: 'version from file output' 
Обходное решение 2:

В этом посте описывается пара других, использующих version-prefix и автоматическое применение BuildNumber в качестве версии-суффикса .

0 голосов
/ 13 сентября 2018

Может быть, я понял это.

Для тех, кто рвет свои волосы, попробуйте это:

Пакетная задача:

Автоматическое управление версиями пакетов: использование переменной среды

Переменная среды: Build.BuildNumber

Затем в верхнем меню, где у вас есть Задачи / Переменные / Триггеры / Параметры, нажмите Параметры.

Формат номера сборки: 1,0 $ (Rev: .r)

Сохранить и поставить в очередь. (выдаст 1.0.1)

Наслаждайтесь!

Поправьте меня, если я ошибаюсь, или если это не работает долгое время.

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