Как исправить проблему с развертыванием Azure, изменив мой azure-pipelines.yml?

#azure-devops #azure-pipelines

#azure-devops #azure-pipelines

Вопрос:

Я пытаюсь создать конвейер с помощью azure cloud и devops. Но я получил сообщение об ошибке ниже при развертывании из успешной сборки. Как я могу решить эту проблему?

Я прочитал статью, это потрясающе «http://www.alessandromoura.com.br/2020/04/23/azure-devops-publish-and-download-artifacts /»

Я применил ваши наборы правил, но всегда получал ошибку ниже :

Ошибка: не найден пакет с указанным шаблоном: D:ar1a ***.zip
Проверьте, был ли пакет, упомянутый в задаче, опубликован как артефакт в сборке или на предыдущем этапе и загружен в текущем задании.

azure-pipelines.yml :

 
# Docker
# Build and push an image to Azure Container Registry
# https://docs.microsoft.com/azure/devops/pipelines/languages/docker

trigger:
- main

resources:
- repo: self

variables:
  # Container registry service connection established during pipeline creation
  dockerRegistryServiceConnection: 'xxxxx'
  imageRepository: 'xxxhelloaspnetcore'
  containerRegistry: 'xxxcontainer01.azurecr.io'
  dockerfilePath: '$(Build.SourcesDirectory)/Dockerfile'
  tag: '$(Build.BuildId)'
  
  # Agent VM image name
  vmImageName: 'ubuntu-latest'

stages:
- stage: Build
  displayName: Build and push stage
  jobs:  
  - job: Build
    displayName: Build
    pool:
      vmImage: $(vmImageName)
    steps:
    - task: Docker@2
      displayName: Build and push an image to container registry
      inputs:
        command: buildAndPush
        repository: $(imageRepository)
        dockerfile: $(dockerfilePath)
        containerRegistry: $(dockerRegistryServiceConnection)
        tags: |
          $(tag)
    - download: none
    - task: DownloadPipelineArtifact@2
      displayName: 'Download Build Artifacts'
      inputs:
        patterns: '**/*.zip'
        path: '$(Build.ArtifactStagingDirectory)'

    - task: PowerShell@2
      displayName: 'Degug parameters'
      inputs:
        targetType: Inline
        script: |
            Write-Host "$(Build.ArtifactStagingDirectory)"
            Write-Host "$(System.DefaultWorkingDirectory)"
            Write-Host "$(System.ArtifactsDirectory)"
            Write-Host "$(Pipeline.Workspace)"
            Write-Host "$(System.ArtifactsDirectory)"
 

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

1. Где вы публикуете артефакт конвейера? Вы не сможете загрузить артефакт конвейера, если сначала не опубликуете его. Сообщение в блоге неверно или содержит неполную информацию. Посмотрите на официальную документацию.

2. Я понятия не имею об этом. Поэтому я не могу ответить «Где вы публикуете артефакт конвейера?» как я могу написать правильный yaml? Или что еще. Спасибо.

3. Начните с просмотра документации.

Ответ №1:

Ваш конвейер создает и отправляет изображение в реестр контейнеров, чтобы у вас не было артефактов конвейера. Вот почему DownloadPipelineArtifact выдает ошибку.

DownloadPipelineArtifact делает sens только при использовании PublishPipelineArtifact ранее. Этот документ — Публикация и загрузка артефактов в Azure Pipelines очень хорошо описывает это.

Существует также способ загрузки артефактов из другого конвейера, но для этого требуется использовать ресурс, но у вас нет определенного ресурса конвейера в вашем конвейере.

Итак, все работает так, как ожидалось. Можете ли вы объяснить, что на самом деле вы хотите загрузить и чего этим добиться?