Azure devops 基于触发器分支设置环境变量-Azure DevOps管道

Azure devops 基于触发器分支设置环境变量-Azure DevOps管道,azure-devops,azure-pipelines,pipeline,Azure Devops,Azure Pipelines,Pipeline,我正在尝试为正在管道中部署到Azure工件的nuget软件包设置软件包版本 要求是,如果我在功能分支上,我需要将-preview附加到包版本的末尾 因此,根据本文: 我已经设置了以下变量: 这是piepline.yml 步骤: - task: PowerShell@2 displayName: 'Set Package Version Type' inputs: targetType: 'inline' script: | # if trigger bra

我正在尝试为正在管道中部署到Azure工件的nuget软件包设置软件包版本

要求是,如果我在功能分支上,我需要将
-preview
附加到包版本的末尾

因此,根据本文:

我已经设置了以下变量:

这是piepline
.yml

步骤:

- task: PowerShell@2
  displayName: 'Set Package Version Type'
  inputs:
    targetType: 'inline'
    script: |
      # if trigger branch is not master - then append -prelease to package version
      if($Env:BUILD_SOURCEBRANCHNAME -ne 'master'){
        $Env:PackageVersionType = '-preview'
        $Env:PackageVersion = "$Env:Major.$Env:Minor.$Env:Patch$Env:PackageVersionType"
      }
      Write-Host $Env:PackageVersionType
      Write-Host $Env:PackageVersion

# Create Nuget Package - After running tests
- task: DotNetCoreCLI@2
  displayName: "Create Nuget Package"
  condition: succeeded()
  inputs:
    command: 'pack'
    packagesToPack: '**/my.csproj'
    versioningScheme: 'byEnvVar'
    versionEnvVar: 'PackageVersion'
    arguments: '--configuration $(buildConfiguration)'

# Push Nuget Package to Artifacts, so it can be consumed
- task: NuGetCommand@2
  displayName: "Publish Nuget Package"
  condition: succeeded()
  inputs:
    command: 'push'
    packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg'
    nuGetFeedType: 'internal'
    publishVstsFeed: ''
正如您在第一步中看到的,当分支名称不是
master
时,我试图将
$Env:PackageVersionType
设置为
-preview

此操作的控制台输出为:


问题是,如何根据管道中的触发器分支设置
$Env:PackageVersion

声明了一个名为
packageVersionType
的变量,并在
Env:BUILD\u SOURCEBRANCHNAME
不是
-preview
的主分支时设置其值

variables:
  packageVersionType: ''

steps:

- task: PowerShell@2
  displayName: 'Set Package Version Type'
  inputs:
    targetType: 'inline'
    script: |
      # if trigger branch is not master - then append -prelease to package version
      if($Env:BUILD_SOURCEBRANCHNAME -ne 'master'){
        $localVersionType = '-preview'
        Write-Host "##vso[task.setvariable variable=packageVersionType;]$localVersionType"
      }
然后在Nuget包中:

# Create Nuget Package - After running tests
- task: DotNetCoreCLI@2
  displayName: "Create Nuget Package"
  condition: succeeded()
  inputs:
    command: 'pack'
    packagesToPack: '*Myproj.csproj'
    versioningScheme: 'byEnvVar'
    versionEnvVar: 'PackageVersion'
    arguments: '--configuration $(buildConfiguration)'

# Push Nuget Package to Artifacts, so it can be consumed
- task: NuGetCommand@2
  displayName: "Publish Nuget Package"
  condition: succeeded()
  inputs:
    command: 'push'
    packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg'
    nuGetFeedType: 'internal'
    publishVstsFeed: ''
并在管道的变量中声明以下内容

PackageVersion = `$(Major).$(Minor).$(Patch)$(packageVersionType)` 
Patch = $[counter(format('{0}.{1}', variables['Major'], variables['Minor']), 0)]