Как опубликовать артефакты отдельно для каждого проекта в решении из конвейера VSTS CI?
В моем решении у меня есть два проекта (Asp.net MVC и Windows Service). Я хочу создать конвейер CI/CD для развертывания веб-приложения и службы Windows на разных виртуальных машинах. Но для этого мой конвейер CI должен иметь возможность публиковать артефакты отдельно для обоих проектов, а затем я могу передать эти артефакты в конвейер CD для развертывания. Как артефакты для всех проектов могут быть опубликованы отдельно в конвейере CI?
PS: если я создаю два решения, каждое с одним проектом, и создаю CI/CD конвейер отдельно, все работает нормально. Но я хочу добиться этого с помощью решения с несколькими проектами, как упомянуто выше.
2 ответа
Вы можете использовать несколько задач публикации, чтобы создать несколько артефактов в одном определении сборки.
Например, предположим, у вас есть ниже, как ваши текущие артефакты для одного проекта, состоящего из _PublishedWebsites\MVS5WebApp (развертываемый сайт XCopy) и _PublishedWebsites\MVS5WebApp_Package (пакет веб-развертывания).
Если вы хотите разделить эти два компонента на два артефакта, вы можете использовать две задачи публикации артефакта, как показано ниже, каждая из которых указывает точный путь публикации (этот путь не поддерживает подстановочные знаки, вам просто нужно указать папку, которую нужно опубликовать)
Это даст вам вывод, как показано ниже.
В этом примере я только использовал задачу "Опубликовать артефакты" и создал два артефакта, используя один проект веб-сайта. Вы можете сделать то же самое для вашего сценария двух проектов. Если вы хотите использовать подстановочный знак для фильтрации большего количества файлов перед публикацией, вы можете использовать задачу "Копировать файл" несколько раз по мере необходимости.
Если вы используете задачу ".net core" в конвейере сборки, снимите флажок "Опубликовать веб-проекты" сразу после текстового поля команды.
Затем он автоматически создает артефакты публикации отдельно для каждого проекта в решении с тем же именем, что и каждый из файлов проекта.
У вас есть несколько способов достичь этого.
Вы можете создать несколько определений сборки, ориентированных на проект, а не решение на этапе сборки с соответствующими аргументами.
Или вы можете иметь одно определение сборки с несколькими этапами сборки.
После этого на стороне релиза вы можете использовать одно определение релиза с несколькими шагами или несколькими определениями релиза.