【问题标题】:Set Environment variable based on trigger branch - Azure DevOps Pipeline根据触发分支设置环境变量 - Azure DevOps Pipeline
【发布时间】:2020-10-23 10:08:00
【问题描述】:

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

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

所以这里基于这篇文章: https://www.koskila.net/fun-with-azure-devops-nuget-package-versioning/

我设置了以下变量:

这是 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

【问题讨论】:

    标签: azure-devops azure-pipelines pipeline


    【解决方案1】:

    好的,所以想通了:

    声明了一个名为packageVersionType的变量,如果Env:BUILD_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)]
    

    【讨论】:

      猜你喜欢
      • 2021-12-19
      • 1970-01-01
      • 2021-03-29
      • 2020-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-02
      相关资源
      最近更新 更多