Программное обеспечение должно быть написано, протестировано и развернуто в производственной среде. Для этого разработчики и DevOps строят CI/CD конвейеры или конвейеры сборки/релиза, которые автоматизируют большую часть этой деятельности.
A pipeline allows developers, DevOps teams and others to produce and deploy reliable code. In the Microsoft realm, the way to build a pipeline is with Azure DevOps with a feature called Azure Pipelines.
Пайплайны Azure Pipelines позволяют автоматически выполнять сборки, проводить тестирование и разворачивать код (релиз) в различных средах разработки и производства. Но что, если вы никогда не слышали о Azure DevOps или пайплайне ранее, или никогда не создавали его с использованием Azure DevOps? Если так, то этот учебник по Azure Pipelines для вас.
Большое спасибо Peter De Tender, техническому тренеру Microsoft Azure, за его помощь в написании этой статьи.
Обзор проекта
Это статья о проекте, в которой мы расскажем, как построить проект или реализовать решение. Каждый раздел будет представлять собой накопительные шаги, основанные на предыдущих.
В этом проекте вы узнаете, с самого начала, как создать свой первый Azure DevOps пайплайн. Вы узнаете концепции, такие как вызов сборок из коммита управления версиями Git, автоматическое выполнение тестов и, наконец, выпуск пакетов в среды. К кoнцу этого проекта у вас будет пример развернутого приложения электронной коммерции в качестве веб-приложения Azure.
На выполнение этого проекта у вас уйдет 30 минут.
Обратите внимание, что если вы следуете за этим проектом и немедленно удаляете созданные ресурсы, вам не будет начислено платы на вашем учете Azure. Не забудьте удалить их!
Целевая аудитория
Этот проект охватит основы настройки вашего первого конвейера Azure в веб-интерфейсе Azure DevOps. Вы узнаете многое из этого проекта, если вы совершенно новичок в Azure Pipelines, но не так много, если у вас уже есть собственные конвейеры или вы гуру Azure Pipelines.
Требования к среде
Если вы планируете шаг за шагом пройти через этот проект, убедитесь, что у вас как минимум есть следующее:
- Учетная запись Azure
- Уже вошли в Портал Azure с правами глобального администратора или аналогичными.
- A GitHub account
- Пустой репозиторий Github создан
- Пустое развернутое веб-приложение Azure, развернутое с использованием dotnetcore 2.2 и Linux для платформы.
Создание организации Azure DevOps
Поскольку мы начинаем с абсолютного нуля, сначала вы создадите «базовый» объект, внутри которого содержатся все функции и услуги Azure DevOps, называемый организацией. Организация – это место, где хранятся все проекты, о создании которых вы узнаете в следующем разделе.
- Из портала Azure перейдите в Все сервисы, найдите DevOps и выберите Azure DevOps. Вы можете увидеть, что ожидать, ниже. Это откроет вкладку Azure DevOps, как показано ниже.

2. Затем нажмите Мои организации Azure DevOps и введите учетные данные Azure. Вы попадете на страницу, где сможете создать новую организацию, как показано ниже. После этого нажмите на синюю кнопку Создать новую организацию.

3. На следующей странице укажите имя организации. Если возникнут проблемы с использованием определенного имени, обязательно проверьте конвенции именования организаций Azure DevOps. На этом экране также укажите регион Azure, ближайший к вам. После завершения нажмите Продолжить.

На этом этапе ваша организация Azure DevOps создана!
Создание проекта Azure DevOps
Следующим шагом является создание проекта. Проект – это контейнер для конвейера, который вы создадите, различных артефактов и любой другой информации, касающейся определенного сервиса или программного обеспечения.
Azure DevOps предоставляет вам возможность создавать проект в том же рабочем процессе, что и создание организации, как показано выше. Если вы следовали инструкциям, теперь у вас должна открыться страница создания проекта, как показано ниже.
- На странице создания проекта укажите имя вашего проекта в поле Имя проекта. Для этого проекта вы будете использовать проект Azure DevOps с именем devopsdemo.
- Подтвердите создание проекта, нажав кнопку + Создать проект.
- На данный момент оставьте Видимость установленной на Частный. Это гарантирует, что ваш проект не будет доступен в Интернете. Публичный проект предоставляет незарегистрированным пользователям и пользователям без учетной записи только чтение артефактов проекта.

На этом этапе ваша рабочая область Azure DevOps (проект + организация) создана. Если вы следовали инструкциям, у вас теперь есть созданная организация Azure DevOps с именем pdtitws123 и проект внутри этой организации с именем devopsdemo.

Создание конвейера сборки Azure DevOps
Теперь, когда у вас есть организация и проект Azure DevOps, вы можете создать конвейер сборки внутри. Именно здесь происходит вся магия. Это место, где вы будете создавать сборки для выполнения различных задач, таких как компиляция кода, внесение зависимостей и многое другое.
- С панели инструментов выберите Pipelines, затем Builds.

2. Появится сообщение, которое сообщит вам, что пока не найдено ни одного конвейера сборки. Нажмите New pipeline, чтобы начать создание конвейера сборки.

3. Затем вас попросят указать, где хранится ваш код. В этом проекте код хранится в репозитории GitHub. Выберите GitHub. Здесь хранится код, и триггеры для вызова сборки будут поступать отсюда.

4. После нажатия GitHub вас попросят предоставить учетные данные вашей учетной записи GitHub, как показано ниже. Прежде чем начать этот шаг, не забудьте создать пустой репозиторий GitHub, как определено в разделе Предварительные требования этой статьи!

5. Затем подтвердите шаг, где вас просят авторизовать Azure Pipelines. Это гарантирует, что Azure DevOps имеет разрешение на доступ к вашим репозиториям GitHub.

Связывание репозитория GitHub с конвейером сборки
После предоставления разрешения Azure DevOps на вашу учетную запись GitHub теперь свяжите репозиторий GitHub с конвейером сборки.
- Выберите пустой репозиторий GitHub, который вы создали для этого проекта.

2. Разрешите проекту читать, записывать и проверять исходный код из выбранного вами репозитория. Затем подтвердите этот процесс, нажав Approve & Install.

3. Нажав подтвердить, вы увидите сгенерированную ошибку, как показано ниже. Эта ошибка возникнет из-за того, что выбранный репозиторий GitHub пуст.

На этом этапе ваш репозиторий GitHub будет связан с конвейером сборки Azure DevOps.
Вам не нужно создавать полностью новую конвейерную систему каждый раз, когда вы хотите связать репозиторий GitHub с конвейером сборки Azure DevOps.
Заполнение образца кода репозитория GitHub
Конвейер сборки Azure DevOps не будет работать без кода в репозитории GitHub. На этом этапе суть кода не имеет значения. Чтобы вставить код в репозиторий, мы будем использовать существующий репозиторий для клонирования некоторого кода. В этом репозитории у меня есть весь исходный код, доступный для публикации образца электронной коммерции в Azure WebApps.
Образец кода для этого репозитория будет содержать образец приложения электронной коммерции с именем SimplCommerce. Это приложение – это открытое приложение на dotnetcore, более реалистичное, чем типичный проект “hello world”.
- Перейдите по ссылке этого образца репозитория GitHub и нажмите Импортировать код, как показано ниже.

2. Для URL клонирования старого репозитория используйте http://github.com/007FFFLearning/SimplDev и нажмите Начать импорт.

Когда шаг импорта репозитория завершится успешно, обновите окно Конвейера Azure DevOps, что должно позволить вам продолжить теперь.
Проверка и просмотр конвейера сборки в YAML
На этом этапе вы находитесь на этапе обзора процесса создания конвейера. Теперь вам будет представлено представление конвейера сборки в формате YAML. Этот файл YAML создается автоматически на основе обнаружения языка исходного кода, который является dotnetcore в этом проекте. Одним из реальных преимуществ Azure DevOps является конвейер YAML. Со многими другими инструментами DevOps вам приходится создавать файл конвейера вручную.
Вручную запускаем конвейер сборки Azure

В конвейере непрерывной интеграции (CI) сборка обычно запускается после фиксации изменений в системе управления исходным кодом. Однако вы также можете вручную запустить конвейер сборки. Давайте вручную запустим конвейер сборки, чтобы увидеть, что происходит.
Если вы следовали за нами, на этом этапе вы должны быть в состоянии нажать Запуск, чтобы запустить конвейер сборки. Это запустит процесс сборки конвейера, как показано на скриншоте ниже.

Через несколько секунд вы увидите, что процесс будет запущен для macOS, как показано ниже. В процессе выполнения каждой задачи и работы в конвейере сборки будут в реальном времени предоставляться сведения.

Затем конвейер сборки повторит тот же процесс для других операционных систем (в данном примере), как показано ниже. Процесс выполнения будет сильно варьироваться в зависимости от того, как был построен файл YAML.

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

Вы теперь создали конвейер сборки Azure DevOps!
Создание конвейера развертывания Azure DevOps
Конвейер сборки создан, что является отличным прогрессом. Если бы вы остановились на этом этапе, у вас уже был бы полностью автоматизированный конвейер. Но мы еще не закончили! Конечная цель программного обеспечения – развертывание, чтобы клиенты могли им пользоваться. Пришло время также автоматизировать выпуск с помощью конвейера развертывания!
A release pipeline takes a build artifact, a result of the build process and deploys that to one or more environments. In this Project, you’re going to use a release pipeline to publish code in the GitHub repo to an Azure Web App.
- В Azure DevOps нажмите Pipelines, а затем Releases.

2. Затем выберите New, а затем New Release Pipeline. Это запускает мастер нового конвейера выпуска.

3. Из списка шаблонов справа выберите Azure App Service Deployment. Вы увидите много разных видов шаблонов, доступных для экономии времени при создании будущих конвейеров выпуска.

4. Укажите описание для имени этапа. Этот этап будет содержать задачи выпуска. Для этого проекта используйте имя Deploy_to_webapp.

Конвейер выпуска теперь должен выглядеть как на скриншоте ниже.

5. В поле Этапы выберите 1 задача, 1 задача. В этом поле вы в конечном итоге укажете параметры среды Azure Web App, которую вы будете использовать для фактического развертывания.
6. Часть шаблона развертывания службы приложений Azure включает несколько параметров, которые вам нужно будет определить на этом экране.
- Имя этапа – Развертывание-на-веб-приложения2 в этом примере.
- Подписка Azure – выберите свою подписку и подтвердите с помощью Authorize (требуются учетные данные)
- Тип приложения – Веб-приложение на Linux
- Имя службы приложений – веб-приложение, которое вы создали ранее

7. По завершении нажмите Конвейер в верхнем меню вашего проекта Azure Pipeline, как показано ниже. Это вернет вас на главный экран и позволит завершить следующий шаг, который заключается в указании артефактов.

Добавление артефактов в конвейер выпуска Azure DevOps
В рамках конвейера выпуска есть множество различных элементов, которые необходимо развернуть. Эти элементы называются артефактами. Артефакты просто говоря, это развертываемые компоненты вашего приложения. Конвейеры Azure могут развертывать артефакты, произведенные широким диапазоном источников артефактов.
В этом разделе давайте рассмотрим, как добавить артефакты в конвейер выпуска.
- На экране Конвейер щелкните Добавить артефакт.
- Тип источника уже установлен на Сборка, что вам и нужно, поскольку вы будете разворачивать результат сборочного конвейера, созданного ранее. Выберите сборочный конвейер, созданный ранее, в выпадающем списке Источник (сборочный конвейер).
- Когда закончите, нажмите на Добавить, чтобы сохранить конфигурацию.

4. Наконец, нажмите кнопку Сохранить в правом верхнем углу экрана, чтобы сохранить конвейер выпуска.
Создание выпуска Azure DevOps
После создания конвейера выпуска вы начнете создавать выпуски. Выпуск – это конкретный запуск конвейера. Представьте себе конвейер выпуска как шаблон, а конкретные экземпляры этого конвейера выпуска – как выпуски. После создания выпуска его можно развернуть.
Чтобы создать выпуск:
- Нажмите кнопку Создать выпуск в правом верхнем углу окна, как показано ниже.

2. Вы не собираетесь делать что-то сложное, поэтому на экране Создать новый выпуск примите значения по умолчанию и нажмите Создать. У вас на данный момент есть только один этап и одна версия созданного артефакта для развертывания.

3. Через несколько секунд вы получите уведомление (зеленая полоса), что выпуск был создан, как показано ниже. Теперь щелкните по Выпуск-1, что перенаправит вас на детали процесса выпуска.

Вы только что создали выпуск и он готов к развертыванию!
Ручное развертывание выпуска
A release is a set of instructions to perform on how to deploy a build. You’ve done all of that. Now it’s time to actually run those instructions and deploy code to an environment.
На странице выпуска Выпуск-1, который вы создали ранее:
- Выберите этап Deploy_to_webapp и подтвердите Deploy. Когда вы это сделаете, статус изменится на In progress, как показано ниже. В этот момент выпуск захватывает исходный код из ранее выполненного конвейера сборки и отправляет его на экземпляр Azure WebApp.
Этот шаг инициирует задачу, выполняющуюся в фоновом режиме на агенте, копирующем исходный код и выполняющем цикл релиза.

2. Нажмите на этап, пока он находится в процессе выполнения. Вы увидите любую информацию журнала, отображаемую в области вывода консоли.

После завершения этап должен показать Succeeded, как показано ниже.

Если все прошло хорошо, выпуск должен быть завершен, и теперь у вас должно быть опубликованное веб-приложение в Azure Web App!
Инспекция развернутого веб-приложения Azure
Теперь, когда весь процесс завершен, обязательно посмотрите на плоды своего труда.
- Войдите в Портал Azure, перейдите к выбранному вами веб-приложению Azure WebApp в конвейере выпуска и скопируйте URL, как показано ниже.

2. Теперь вставьте этот URL в браузер, предоставив URL веб-приложения Azure. Ваш браузер должен загрузить пример приложения электронной коммерции, подобный домашней странице ниже

Теперь вы все сделали! У вас теперь есть веб-приложение Azure, развернутое из репозитория GitHub, готовое к полной автоматизации!
Очистка
Если вы следовали этому проекту, у вас теперь есть новая организация Azure DevOps, проект, конвейер сборки, конвейер выпуска и выпуск. Если вы закончили тестирование, убедитесь удалить созданную организацию, чтобы избежать возможных затрат на ресурсы Azure.
Для этого:
- Вернитесь в свое основное рабочее пространство Azure DevOps.
- Нажмите Настройки организации в левом нижнем углу.
- На экране Обзор нажмите кнопку Удалить внизу страницы под Удалить организацию.
- Введите имя организации и затем нажмите Удалить. Это должно удалить все, что вы только что сделали.
Ваши выводы
Если вы следовали инструкциям в этом проекте, вы создали полный конвейер CI/CD с нуля в Azure DevOps. Теперь у вас должна быть хорошая представление о том, что включает в себя этот процесс.
Пайплайны Azure могут углубиться гораздо глубже, чем вы делали в этом проекте, но теперь у вас есть базовые знания всего процесса.