#angular #azure-pipelines #azure-pipelines-release-pipeline #azure-pipelines-build-task
#angular #azure-конвейеры #azure-pipelines-release-pipeline #azure-pipelines-build-task
Вопрос:
Я нахожусь в процессе настройки конвейеров Azure для сборки и публикации проекта Angular, содержащего некоторые разработанные нами библиотеки, но у меня возникли некоторые проблемы с пониманием некоторых его частей, в частности с запуском конвейера выпуска для сборки и публикации библиотек. Я читал это руководство, чтобы узнать, как его настроить.
Конвейер (ы) сборки
В настоящее время проект Angular содержит две библиотеки. Я создал два конвейера сборки, которые устанавливают зависимости библиотеки, создают одну из библиотек соответственно, архивируют папку сборки и публикуют архив в $(Build.ArtifactStagingDirectory)
. Насколько я понимаю, это должно сделать его доступным для конвейера сборки. Больше ничего не было сделано в конвейере (ах) сборки.
Конвейер выпуска
Далее я создал конвейер выпуска. В конвейере я добавил артефакт, установил тип источника на Build
и выбрал один из конвейеров сборки. Я включил триггер непрерывного развертывания для артефакта и установил фильтр ветвей сборки для refs/tags/v*
, поскольку я экспериментировал со сборкой из тегов.
Затем на этапе я добавил Extract files
задачу, для которой установлено значение $(System.DefaultWorkingDirectory)extracted
папка назначения. После этого я добавил npm
задачу, для которой задана команда publish
, в и рабочую папку, которая содержит, $(System.DefaultWorkingDirectory)extracted
заданный в ,, файл package.json, и реестр в ленту артефактов Azure.
Запуск сборки
Как отмечалось выше, конвейер выпуска не запускается, если я добавляю тег в репозиторий.
Что я пробовал
Я попытался изменить триггер CD для артефакта в конвейере выпуска на master
ветку и зафиксировать в ветке, но это также не запустило конвейер выпуска.
Если я запускаю конвейер сборки вручную, конвейер выпуска запускается, но завершается ошибкой
error enoent ENOENT: no such file or directory, open 'D:ar1aextractedpackage.json'
Но это, похоже, просто недопонимание с моей стороны относительно того, где заканчивается опубликованный архив.
Что бы я хотел, чтобы произошло
Для запуска конвейера выпуска при добавлении тега версии в репозиторий.
Лучшим решением для меня было бы, если бы я мог опубликовать две библиотеки в проекте Angular с разными номерами версий, но я не уверен, как это сделать, по крайней мере, если я не буду использовать теги для запуска выпусков (тег был бы, например, v0.0.1
и, следовательно, не имеет смысла, если у одной библиотеки есть версия 0.0.3
, а у другой — 0.0.1
).).
Второй лучший вариант — это если я могу опубликовать обе библиотеки и просто сохранить для них одинаковые номера версий.
Приветствуется любая помощь и советы. Если какая-либо информация отсутствует, пожалуйста, дайте мне знать.
Редактировать — Решение
Полагаю, я неправильно понял, как функционируют триггеры в конвейерах выпуска.
Отсутствующей частью было добавление триггера в конвейер сборки для тегов. Для сборок на основе конструктора мне было непонятно, что это можно сделать, поскольку вам просто показаны ветви в раскрывающемся списке фильтра ветвей в триггерах для конвейера сборки, но вы можете просто ввести refs/tags/v*
в поле Фильтровать мои ветви и нажать enter (также показано на рисунке ниже).
Создать изображение триггера конвейера
Спасибо @JukkaK за это.
Ответ №1:
О сборках смотрите Обновление в нижней части этого поста в блоге:
https://edsnider.net/2018/11/14/detecting-git-tag-pushes-in-azure-devops.html
Не уверен, как это будет работать с build designer, если вы не можете использовать сборки на основе yaml, но я бы попробовал использовать простой «v *» или «refs / tags / *». Если они не работают с дизайнером, одним из способов обойти проблему может быть пометка сборки (возможно, с помощью https://marketplace.visualstudio.com/items?itemName=colinsalmcorner.colinsalmcorner-buildtasks ) с условием:
and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))
А затем запуск выпуска на основе тегов
Комментарии:
1. Я придерживался сборки на основе конструктора, но мне удалось решить ее на основе вашего ответа, см. Редактирование в вопросе.
2. Рад, что теперь это работает; Я пропустил упоминание триггеров сборки, поскольку они не были показаны на первом изображении. Но да, сборка запускается изменениями в VC, релизы запускаются артефактом, созданным из ссылок на ветку / тег / etc триггером.