Трубопровод освобождения VSTS не может найти освобожденный артефакт - PullRequest
0 голосов
/ 02 сентября 2018

Я пытаюсь настроить CI / CD без особой удачи. Моя цель - создать через VSTS веб-проект .net и развернуть его в приложении AWS Beanstalk.

Где я до сих пор?

Создан vsts-ci.yml файл следующим образом:

# ASP.NET
# Build and test ASP.NET web applications.
# Add steps that publish symbols, save build artifacts, deploy, and more:
# https://docs.microsoft.com/vsts/pipelines/apps/aspnet/build-aspnet-4

pool:
  vmImage: 'VS2017-Win2016'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@0

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(Build.artifactStagingDirectory)"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

И у меня есть определение сборки, как показано ниже:

build

С этим мой первый шаг build выполняется правильно. Кстати, агентский пул Hosted VS2017.

Затем я создал конвейер выпуска, как показано ниже:

release pipeline

И в качестве задач этапа 1 (часть, которая выполняется после шага артефакта), у меня есть следующее:

Release

Я подключил сборку к коммиту основной ветки и подключил релиз к успешной сборке, эти триггеры работают правильно. Хотя это не удается. Проблема вызвана тем, что файлы артефактов не найдены, возможно, из-за неправильного ввода пути. Но я не знаю правильных версий.

После завершения сборки он утверждает, что создал файл .zip, содержащий опубликованную версию:

build-success

Но после этого выпуск завершается ошибкой, только если нет такого файла. Я пробовал много путей в поле Web Deploy Archive, но ни один из них не смог найти zip-файл.

failed-release

Вы видите задачу PowerShell, я создал ее для проверки путей и того, что в них есть, и они в основном пусты.

Одна интересная вещь, которую я понял, это то, что build помещает файлы в D:\a\1\a, но задачи релиза пытаются заглянуть в D:\a\r1\a, когда в поле Web Deploy Archive добавлено $(System.defaultWorkingDirectory) и $(Build.artifactStagingDirectory).

.

Еще одна странность в том, что на стадии Download artifact выпуска написано Linked artifact count: 0. Который я ожидал бы быть чем-то еще.

enter image description here

Что я здесь не так делаю? Если бы кто-нибудь смог мне помочь, я был бы признателен.

Обновление: Я добавил "Опубликовать артефакт: падение"

Когда Path to publish равно "$ (System.DefaultWorkingDirectory) /project-2-codes.zip"

Публикация артефактов сборки завершилась ошибкой: не найдено PathtoPublish: D: \ a \ r1 \ a \ project-2-codes.zip

Когда Path to publish равно "$ (System.DefaultWorkingDirectory)"

Публикация артефактов сборки завершилась ошибкой: не найдено PathtoPublish: D: \ a \ r1 \ a \ $ (Build.ArtifactStagingDirectory)

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

После долгих ударов головой о стены я обнаружил проблему.

Я неправильно создал определение сборки. Я использовал мастер по умолчанию, не обращая внимания на пользовательский конструктор (я не думаю, что текст рядом со ссылкой и название ссылки имеет какое-либо значение).

build creation page

И это создавало почти пустое определение сборки. Я даже не понял, что он делает. Теперь, используя visual designer, я могу выбрать шаблон определения сборки со всеми необходимыми задачами сборки. После создания сборки все работало просто замечательно.

Вот определение сборки, которое я придумал:

build

А вот задача развертывания beanstalk:

deployment

0 голосов
/ 03 сентября 2018

Вам необходимо опубликовать результаты сборки как артефакт. Используйте задачу Publish Artifact.

...