Автоматический запуск конвейера выпуска Azure - PullRequest
1 голос
/ 02 апреля 2019

Я нахожусь в процессе настройки конвейеров Azure для создания и публикации проекта Angular, содержащего некоторые библиотеки, которые мы разработали, но у меня возникают некоторые проблемы с пониманием некоторых его частей, в частности, запуск конвейера выпуска для создания и публикациибиблиотеки.Я читал это руководство , чтобы узнать, как его настроить.

Построить конвейер (ы)

В настоящее время проект Angular содержит две библиотеки.Я создал два конвейера сборки, которые устанавливают зависимости библиотеки, соответственно строит одну из библиотек, архивирует папку сборки и публикует архив в $(Build.ArtifactStagingDirectory).Насколько я понимаю, это должно сделать его доступным для конвейера сборки.Больше ничего не было сделано в конвейере (ах) сборки.

Образ конвейера сборки

Конвейер релиза

Далее я создал конвейер релиза,В конвейере я добавил артефакт, установил тип источника на Build и выбрал один из конвейеров сборки.Я включил Триггер непрерывного развертывания на артефакте и установил фильтр ветви построения из refs/tags/v*, поскольку я экспериментировал со сборкой из тегов.

Затем, нана этапе я добавил задачу Extract files с папкой назначения , установленной на $(System.DefaultWorkingDirectory)\extracted.После этого я добавил задачу npm с Command , установленным на publish и Рабочая папка, которая содержит package.json , установленный на $(System.DefaultWorkingDirectory)\extracted, и реестр в фид артефактов Azure..

Изображение конвейера выпуска

Запуск сборки

Как отмечалось выше, конвейер выпуска не запускается, если я добавляю тег в хранилище.

То, что я пробовал

Я попытался изменить триггер CD на артефакте в конвейере выпуска на ветку master и зафиксировать в ветке, но это не вызвало освобождениеКонвейер либо.

Если я запускаю конвейер сборки вручную, конвейер выпуска запускается, но завершается с ошибкой

error enoent ENOENT: no such file or directory, open 'D:\a\r1\a\extracted\package.json'

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

Что бы я хотел, чтобы произошло

Чтобы конвейер выпуска работал, когда я добавляю тег версии в хранилище.

Лучшее решение дляя был бы, если бы я мог опубликовать две библиотекиОвен в проекте Angular с разными номерами версий, но я не уверен, как это сделать, по крайней мере, если бы я использовал теги для запуска релизов (тег был бы, например, v0.0.1 и, следовательно, не имеет смысла, если одна библиотека находится вверсия 0.0.3 и другая на 0.0.1).

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

Любая помощь и советыценится.Если какая-либо информация отсутствует, пожалуйста, дайте мне знать.

Правка - Решение

Полагаю, я неправильно понял, как функционируют триггеры на конвейерах освобождения.триггер на конвейере сборки для тегов.Для сборок на основе конструктора мне было непонятно, что это можно сделать, поскольку вы просто показываете ветви в раскрывающемся списке в фильтре веток на триггерах для конвейера сборки, но вы можете просто ввести refs/tags/v* в Отфильтруйте мои ветви поле и нажмите Enter (также показано на рисунке ниже).

Создайте изображение триггера конвейера

Кредит @JukkaK за это.

1 Ответ

0 голосов
/ 02 апреля 2019

Для сборки, см. Обновление в нижней части этого сообщения блога:

https://edsnider.net/2018/11/14/detecting-git-tag-pushes-in-azure-devops.html

Не уверен, как это будет работать с конструктором сборок, если вы не можете использовать сборки на основе yaml, но я бы попробовал просто "v *" или "refs / tags / *". Если они не работают с дизайнером, одним из способов обойти проблему может быть пометка сборки (возможно, с https://marketplace.visualstudio.com/items?itemName=colinsalmcorner.colinsalmcorner-buildtasks) с условием:

and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))

И затем запуск релиза на основе тегов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...