#azure-devops #azure-pipelines #pipeline
#azure-devops #azure-конвейеры #конвейер
Вопрос:
Я пытаюсь установить версию пакета для пакетов nuget, развертываемых в Azure Artifacts в конвейере.
Требование заключается в том, что если я нахожусь в ветке функций, мне нужно добавить -preview
в конец версии пакета.
Итак, основываясь на этой статье здесь: https://www.koskila.net/fun-with-azure-devops-nuget-package-versioning /
Я настроил следующие переменные:
и это круговая линия .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: ''
Как вы можете видеть на первом шаге, я пытаюсь установить значение $Env:PackageVersionType
to -preview
, когда имя ветки не master
указано .
Вывод на консоль для этого:
Вопрос в том, как мне установить $Env:PackageVersion
переменную среды на основе ветви триггера в моем конвейере?
Ответ №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)]