web-dev-qa-db-ja.com

VSTS / Azure Devops自動インクリメントパッケージバージョン

.Net Coreタスクを実行してパックします。出力されたnugetパッケージバージョンを自動インクリメント自体に、たとえば次の形式で取得するにはどうすればよいですか?

1.0.0

次回パック/プッシュするときは、1.0.1を見たい

Build.BuildNumberで環境ビルド変数を使用し、現時点で出力を取得しています:

20180913-.2.0など。従来のバージョン管理システムに修正したい

ありがとうございました。

7
The_Chud

たぶん私はそれを理解しました。

髪を引き裂く人はこれを試してください:

パックタスク:

パッケージの自動バージョン管理:環境変数を使用する

環境変数:Build.BuildNumber

次に、タスク/変数/トリガー/オプションがあるトップメニューで、[オプション]をクリックします。

ビルド番号の形式:1.0 $(Rev:.r)

保存してキューに入れます。 (1.0.1を生成します)

楽しい!

私が誰か間違っている場合、またはこれが長期的に機能しない場合は、私を修正してください。

16
The_Chud

docs から、変数_Rev:.r_はdailyビルドリビジョンカウントです。受け入れられた「解決策」は、ある日は_1.0.12_のバージョンを完成させ、翌日は_1.0.1_になります。

単純なインクリメンタルとuniquesemverが必要な場合は、1.0.$(BuildID)を使用します。

$(BuildID)はビルド用の内部不変カウンタであり、したがって$(BuildNumber)よりもはるかにクリーンです。


BuildIDは常にインクリメントされ、リセットされません。したがって、マイナーなバンプの後、_1.2.123_が_1.3.124_になると言うことになります。

このタスクをうまく実行したい場合は、 npm version または同様の方法を使用して実行できます。たとえば、DartまたはFlutterビルドの pubspec_version です。

_- script: npm version $RELEASE_TYPE
_

ここで、_$RELEASE_TYPE_は、ビルド(CI:PRなど)に基づいて設定できる変数で、値はmajorminorpatchprereleaseなどです。

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

更新:リポジトリバージョンのバンプとビルドでの使用(npmを使用)

リポジトリのバージョンを更新するために、DevDependencyとして npm version を含めることにしました。これは、コミット時にプロジェクトバージョンをバンプするためのプリコミットフックです。

この手法は、他のプロジェクトタイプに適用してサブフォルダーに配置できますが、サーバーOSの要件が複雑になる可能性があります。

ビルドでこのバージョンを使用するには、このbashスクリプトtaskを追加します。これは、バージョンをタスク変数として取得およびエクスポートします。

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

.Net Core Taskのみのバージョン

残念ながら、レポバンプはありません。

_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' 
_

この投稿 は、version-prefixを使用し、BuildNumberをversion-suffix

13
greg.arnott

私にとっては、[オプション]タブの[ビルド番号の形式]を[

$(date:yyyy).$(date:MMdd)$(rev:.r) 

次のビルド引数を追加します:

/p:Version=1.$(Build.BuildNumber) /p:AssemblyVersion=1.$(Build.BuildNumber)

この場合、メジャーバージョンを手動で管理しますが、マイナーバージョンとビルド番号は自動的に設定されます。展開したバージョンを簡単に理解できます。

0
Keen