Конвейеры Azure DevOps HelmDeploy: как получить последнюю версию на chartPath

#azure-devops #azure-pipelines #kubernetes-helm

#azure-devops #azure-конвейеры #kubernetes-helm

Вопрос:

У меня есть конвейер Azure, который создает контейнер Docker и загружает его в реестр контейнеров Azure.

Диаграмма исходного кода упаковывается, развертывается по временному пути артефакта, а затем развертывается в Kubernetes с помощью команд Helm 3.

    - task: HelmDeploy@0
        inputs:
          command: 'package'
          chartPath: Server/charts/server
          destination: $(Build.ArtifactStagingDirectory)

      - task: HelmDeploy@0
        inputs:
          connectionType: 'Kubernetes Service Connection'
          kubernetesServiceConnection: 'Staging12602128'
          namespace: 'staging'
          command: 'upgrade'
          chartType: 'FilePath'
          chartPath: '$(Build.ArtifactStagingDirectory)/server-0.0.1.tgz' <<== How to select latest version?
          releaseName: 'server'
  

Пункт назначения в команде package использует последнюю версию диаграммы, и она выглядит так /home/vsts/work/1 / a/server-0.1.1.tgz

Для chartPath команды обновления во всех примерах требуется точная версия пакета tgz. Как мне автоматически вставлять последнюю версию диаграммы в «chartPath» в задаче обновления, чтобы мне не приходилось изменять ее вручную при каждом обновлении?

Я безуспешно пытался:

  chartPath: '$(Build.ArtifactStagingDirectory)/server-*.tgz'
 chartPath: '$(Build.ArtifactStagingDirectory)/*.tgz'
 chartPath: '$(Build.ArtifactStagingDirectory)/$(Build.SourceVersion).tgz'
 chartPath: '$(Build.ArtifactStagingDirectory)/server-$(Build.DefinitionName).tgz'
  

Комментарии:

1. Как насчет проблемы? Разрешен ли приведенный ниже ответ на ваш вопрос, если нет, не могли бы вы сообщить мне последнюю информацию об этой проблеме?

2. @FrancesoCristallo можете ли вы проголосовать за мой ответ, если это было полезно для вас?

Ответ №1:

Я не уверен, откуда взят ваш номер версии, но даже без этого вы можете попробовать этот подход:

 - task: HelmDeploy@0
    inputs:
      command: 'package'
      chartPath: Server/charts/server
      destination: $(Build.ArtifactStagingDirectory)
- pwsh: |
        $charts = Get-ChildItem
        $sorted = $charts | sort -Descending
        $latest = $sorted[0]
        Write-Host "##vso[task.setvariable variable=chartName;]$latest"
    workingDirectory: '$(Build.ArtifactStagingDirectory)'
- task: HelmDeploy@0
    inputs:
      connectionType: 'Kubernetes Service Connection'
      kubernetesServiceConnection: 'Staging12602128'
      namespace: 'staging'
      command: 'upgrade'
      chartType: 'FilePath'
      chartPath: '$(Build.ArtifactStagingDirectory)/$(chartName)' <<== How to select latest version?
      releaseName: 'server'