How can I associate the build version generated by

2019-07-26 01:13发布

I started integrating Visual Studio App Center in my VSTS build pipeline.

Setup

After my iOS application is built, its binaries are sent to App Center. App Center does not build the app: VSTS does. Here is a screenshot of the latest builds and the version numbers:

VSTS - successful builds with appropriate version number

In Visual Studio App Center, I can't (re)use version number actually generated by the VSTS pipeline. As shown in the screen capture below, the version value is always 1.0 (1.0):

VS App Center - successful release with 1.0 version numbers

Question

In Visual Studio App Center, how can I associate the version number from the VSTS build to a release in VS App Center?

2条回答
我命由我不由天
2楼-- · 2019-07-26 01:30

Check the solution in case Auto incrementing build number for appxbundle package when deploying to appcenter via vsts:

You can update the version through PowerShell (add PowerShell task to build definition), the sample scripts: 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")

More information, you can refer to this article: Set up a continuous deployment build for sideloading

查看更多
虎瘦雄心在
3楼-- · 2019-07-26 01:45

Visual Studio App Center is supposed to grab the version information directly from the binaries.

In my case, the bash script used in VSTS to apply the proper version number in the AssemblyInfo.cs and the Info.plist got broken (it was not finding files anymore). All the generated binaries had the version version 1.0.

Fixing the script solved the problem.

enter image description here

查看更多
登录 后发表回答