Как связать версию сборки, созданную VSTS, с выпуском в VS App Center?

Я начал интегрировать Visual Studio App Center в свой конвейер сборки VSTS.

Настройка

После создания моего приложения для iOS его двоичные файлы отправляются в Центр приложений. Центр приложений не создает приложение: VSTS создает. Вот скриншот последних сборок и номеров версий:

VSTS - успешные сборки с соответствующим номером версии

В Visual Studio App Center я не могу (повторно) использовать номер версии, фактически созданный конвейером VSTS. Как показано на снимке экрана ниже, значение версии всегда 1.0 (1.0):

VS App Center - успешный выпуск с номерами версий 1.0

Вопрос

Как в Центре приложений Visual Studio связать номер версии сборки VSTS с выпуском в Центре приложений VS?


person Kzrystof    schedule 14.07.2018    source источник


Ответы (2)


Центр приложений Visual Studio должен получать информацию о версии непосредственно из двоичных файлов.

В моем случае сценарий bash, используемый в VSTS для применения правильного номера версии в AssemblyInfo.cs и Info.plist, сломался (файлы больше не находились). Все сгенерированные двоичные файлы имели версию версии 1.0.

Исправление скрипта решило проблему.

введите описание изображения здесь

person Kzrystof    schedule 16.07.2018
comment
отметьте это как ответ, чтобы мы знали, что она решена - person Giulio Vian; 16.07.2018
comment
Я определенно буду, но мне нужно подождать 4 часа (ну ... теперь 2), чтобы отметить свой ответ как решенный :) - person Kzrystof; 16.07.2018

Проверьте решение, если автоматически увеличивает номер сборки для appxbundle при развертывании в appcenter через vsts:

Вы можете обновить версию через PowerShell (добавить задачу PowerShell для определения сборки), примеры скриптов: UpdateVersion.ps1

#Based on https://www.visualstudio.com/docs/build/scripts/index
# Enable -Verbose option
[CmdletBinding()] 

$VersionRegex = "\d+\.\d+\.\d+\.\d+"

$ManifestVersionRegex = " Version=""\d+\.\d+\.\d+\.\d+"""

if (-not $Env:BUILD_BUILDNUMBER)
{
    Write-Error ("BUILD_BUILDNUMBER environment variable is missing.")
    exit 1
}
Write-Verbose "BUILD_BUILDNUMBER: $Env:BUILD_BUILDNUMBER"

$ScriptPath = $null
try
{
    $ScriptPath = (Get-Variable MyInvocation).Value.MyCommand.Path
    $ScriptDir = Split-Path -Parent $ScriptPath
}
catch {}

if (!$ScriptPath)
{
    Write-Error "Current path not found!"
    exit 1
}

# Get and validate the version data
$VersionData = [regex]::matches($Env:BUILD_BUILDNUMBER,$VersionRegex)
switch($VersionData.Count)
{
   0        
      { 
         Write-Error "Could not find version number data in BUILD_BUILDNUMBER."
         exit 1
      }
   1 {}
   default 
      { 
         Write-Warning "Found more than instance of version data in BUILD_BUILDNUMBER." 
         Write-Warning "Will assume first instance is version."
      }
}
$NewVersion = $VersionData[0]
Write-Verbose "Version: $NewVersion"


$AssemblyVersion = $NewVersion
$ManifestVersion = " Version=""$NewVersion"""

Write-Host "Version: $AssemblyVersion"
Write-Host "Manifest: $ManifestVersion"
Write-Host "ScriptDir: " $ScriptDir

# Apply the version to the assembly property files
$assemblyInfoFiles = gci $ScriptDir -recurse -include "*Properties*","My Project" | 
    ?{ $_.PSIsContainer } | 
    foreach { gci -Path $_.FullName -Recurse -include AssemblyInfo.* }

if($assemblyInfoFiles)
{
    Write-Host "Will apply $AssemblyVersion to $($assemblyInfoFiles.count) Assembly Info Files."

    foreach ($file in $assemblyInfoFiles) {
        $filecontent = Get-Content($file)
        attrib $file -r
        $filecontent -replace $VersionRegex, $AssemblyVersion | Out-File $file utf8

        Write-Host "$file.FullName - version applied"
    }
}
else
{
    Write-Warning "No Assembly Info Files found."
}

# Try Manifests
$manifestFiles = gci .\ -recurse -include "Package.appxmanifest" 

if($manifestFiles)
{
    Write-Host "Will apply $ManifestVersion to $($manifestFiles.count) Manifests."

    foreach ($file in $manifestFiles) {
        $filecontent = Get-Content($file)
        attrib $file -r
        $filecontent -replace $ManifestVersionRegex, $ManifestVersion | Out-File $file utf8

        Write-Host "$file.FullName - version applied to Manifest"
    }
}
else
{
    Write-Warning "No Manifest files found."
}

Write-Host ("##vso[task.setvariable variable=AppxVersion;]$NewVersion")

Дополнительную информацию вы можете найти в этой статье: Настроить сборку непрерывного развертывания для боковой загрузки

person Cece Dong - MSFT    schedule 16.07.2018
comment
Я не уверен, что понимаю, как это поможет. Похоже, это связано с управлением версиями пакета AppX (я предполагаю, что это приложение UWP). В моем случае я создаю версию своего iOS-приложения с помощью сценария bash. Не знаю, как его можно забрать в App Center? Откуда 1.0 (1.0) в App Center? Это потому, что я допустил ошибку, и мое приложение фактически не имеет версии? - person Kzrystof; 16.07.2018
comment
Будь я проклят. Оказывается, мой скрипт сломан и не обновляет номер версии в сборке. Я исправлю и посмотрю, все ли работает. - person Kzrystof; 16.07.2018