#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 очень хорошо описывает это.
Существует также способ загрузки артефактов из другого конвейера, но для этого требуется использовать ресурс, но у вас нет определенного ресурса конвейера в вашем конвейере.
Итак, все работает так, как ожидалось. Можете ли вы объяснить, что на самом деле вы хотите загрузить и чего этим добиться?