Постройте свой первый конвейер Azure DevOps с нуля

Программное обеспечение должно быть написано, протестировано и развернуто в производственной среде. Для этого разработчики и 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 DevOps

Поскольку мы начинаем с абсолютного нуля, сначала вы создадите «базовый» объект, внутри которого содержатся все функции и услуги Azure DevOps, называемый организацией. Организация – это место, где хранятся все проекты, о создании которых вы узнаете в следующем разделе.

  1. Из портала Azure перейдите в Все сервисы, найдите DevOps и выберите Azure DevOps. Вы можете увидеть, что ожидать, ниже. Это откроет вкладку Azure DevOps, как показано ниже.
Azure DevOps dashboard

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

Create new Azure DevOps organization page

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

Azure DevOps organization creation page

На этом этапе ваша организация Azure DevOps создана!

Создание проекта Azure DevOps

Следующим шагом является создание проекта. Проект – это контейнер для конвейера, который вы создадите, различных артефактов и любой другой информации, касающейся определенного сервиса или программного обеспечения.

Azure DevOps предоставляет вам возможность создавать проект в том же рабочем процессе, что и создание организации, как показано выше. Если вы следовали инструкциям, теперь у вас должна открыться страница создания проекта, как показано ниже.

  1. На странице создания проекта укажите имя вашего проекта в поле Имя проекта. Для этого проекта вы будете использовать проект Azure DevOps с именем devopsdemo.
  2. Подтвердите создание проекта, нажав кнопку + Создать проект.
  3. На данный момент оставьте Видимость установленной на Частный. Это гарантирует, что ваш проект не будет доступен в Интернете. Публичный проект предоставляет незарегистрированным пользователям и пользователям без учетной записи только чтение артефактов проекта.
Azure DevOps project creation page

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

Azure DevOps project overview

Создание конвейера сборки Azure DevOps

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

  1. С панели инструментов выберите Pipelines, затем Builds.
Azure DevOps Builds menu

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

No build pipelines bound yet. Creating a new pipeline.

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

Selecting version control source

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

Providing GitHub credentials

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

Authorizing Azure Pipelines to access GitHub

Связывание репозитория GitHub с конвейером сборки

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

  1. Выберите пустой репозиторий GitHub, который вы создали для этого проекта.
Empty source GitHub repo

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

Confirm Azure DevOps Github integration

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

Error when GitHub repo is empty

На этом этапе ваш репозиторий GitHub будет связан с конвейером сборки Azure DevOps.

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

Заполнение образца кода репозитория GitHub

Конвейер сборки Azure DevOps не будет работать без кода в репозитории GitHub. На этом этапе суть кода не имеет значения. Чтобы вставить код в репозиторий, мы будем использовать существующий репозиторий для клонирования некоторого кода. В этом репозитории у меня есть весь исходный код, доступный для публикации образца электронной коммерции в Azure WebApps.

Образец кода для этого репозитория будет содержать образец приложения электронной коммерции с именем SimplCommerce. Это приложение – это открытое приложение на dotnetcore, более реалистичное, чем типичный проект “hello world”.

  1. Перейдите по ссылке этого образца репозитория GitHub и нажмите Импортировать код, как показано ниже.
Empty myfirstrepo GitHub repo

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

Proving the repo clone URL

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

Проверка и просмотр конвейера сборки в YAML

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

Вручную запускаем конвейер сборки Azure

Reviewing pipeline YAML

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

Если вы следовали за нами, на этом этапе вы должны быть в состоянии нажать Запуск, чтобы запустить конвейер сборки. Это запустит процесс сборки конвейера, как показано на скриншоте ниже.

Pipeline starting

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

Running on the macOS build agent

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

Running on the Linux build agent

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

Successful pipeline run

Вы теперь создали конвейер сборки 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.

  1. В Azure DevOps нажмите Pipelines, а затем Releases.
Releases menu item

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

New release pipeline menu option

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

Select the Azure App Service deployment template

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

Specify the stage name

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

Created stage

5. В поле Этапы выберите 1 задача, 1 задача. В этом поле вы в конечном итоге укажете параметры среды Azure Web App, которую вы будете использовать для фактического развертывания.

6. Часть шаблона развертывания службы приложений Azure включает несколько параметров, которые вам нужно будет определить на этом экране.

  1. Имя этапа – Развертывание-на-веб-приложения2 в этом примере.
  2. Подписка Azure – выберите свою подписку и подтвердите с помощью Authorize (требуются учетные данные)
  3. Тип приложения – Веб-приложение на Linux
  4. Имя службы приложений – веб-приложение, которое вы создали ранее
Setting template parameters

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

Going back to the pipeline

Добавление артефактов в конвейер выпуска Azure DevOps

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

В этом разделе давайте рассмотрим, как добавить артефакты в конвейер выпуска.

  1. На экране Конвейер щелкните Добавить артефакт.
  2. Тип источника уже установлен на Сборка, что вам и нужно, поскольку вы будете разворачивать результат сборочного конвейера, созданного ранее. Выберите сборочный конвейер, созданный ранее, в выпадающем списке Источник (сборочный конвейер).
  3. Когда закончите, нажмите на Добавить, чтобы сохранить конфигурацию.
Adding an artifact

4. Наконец, нажмите кнопку Сохранить в правом верхнем углу экрана, чтобы сохранить конвейер выпуска.

Создание выпуска Azure DevOps

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

Чтобы создать выпуск:

  1. Нажмите кнопку Создать выпуск в правом верхнем углу окна, как показано ниже.
New release pipeline overview

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

Create a new release item

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

Click on Release-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, который вы создали ранее:

  1. Выберите этап Deploy_to_webapp и подтвердите Deploy. Когда вы это сделаете, статус изменится на In progress, как показано ниже. В этот момент выпуск захватывает исходный код из ранее выполненного конвейера сборки и отправляет его на экземпляр Azure WebApp.

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

Stage in progress

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

Job log showing stage in progress

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

Successful stage

Если все прошло хорошо, выпуск должен быть завершен, и теперь у вас должно быть опубликованное веб-приложение в Azure Web App!

Инспекция развернутого веб-приложения Azure

Теперь, когда весь процесс завершен, обязательно посмотрите на плоды своего труда.

  1. Войдите в Портал Azure, перейдите к выбранному вами веб-приложению Azure WebApp в конвейере выпуска и скопируйте URL, как показано ниже.
Finding the Azure App Service URL in the Azure portal

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

The front page of the deployed application

Теперь вы все сделали! У вас теперь есть веб-приложение Azure, развернутое из репозитория GitHub, готовое к полной автоматизации!

Очистка

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

Для этого:

  1. Вернитесь в свое основное рабочее пространство Azure DevOps.
  2. Нажмите Настройки организации в левом нижнем углу.
  3. На экране Обзор нажмите кнопку Удалить внизу страницы под Удалить организацию.
  4. Введите имя организации и затем нажмите Удалить. Это должно удалить все, что вы только что сделали.

Ваши выводы

Если вы следовали инструкциям в этом проекте, вы создали полный конвейер CI/CD с нуля в Azure DevOps. Теперь у вас должна быть хорошая представление о том, что включает в себя этот процесс.

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

Source:
https://adamtheautomator.com/azure-pipelines/