Ваша компания практикует DevOps? Если да, то используют ли они сервис Microsoft Azure DevOps Services, облачную платформу для разработки программного обеспечения? Или, как вариант, ваши команды используют сервис GitHub?
Если честно, сервис Microsoft DevOps кажется более запутанным. За последние несколько лет у продуктов этого сервиса было очень много названий:
- Visual Studio Team Services;
- Visual Studio Online;
- Предварительная версия службы Team Foundation.
Также есть локальный локальный продукт, который в настоящее время известен как Azure DevOps Server, но когда-то назывался Team Foundation Server (TFS) и Visual Studio Team System.
Добавьте к этому ещё путаницу с приобретением компанией Microsoft сервиса GitHub в июне 2018 года. Конечно у разработчиков DevOps возникает естественный вопрос: «Собирается ли Microsoft отказаться от Azure DevOps в пользу GitHub?»
На сколько стало известно от представителей Microsoft, планируется поддержка обоих сервисов, однако любые инновации будут сначала внедряться на GitHub. Как бы то ни было, у GitHub и Azure DevOps есть свои сильные и слабые стороны. Как только Вы начинаете изучать эти сервисы, находите множество возможностей для интеграции. В сегодняшней статье я расскажу о двух из них. Давайте начнём!
Интегрируйте GitHub с Azure Repos
Первым делом, давайте узнаем, как перевести существующий публичный или частный репозиторий GitHub в Azure Repos.
Предположим, что мы не хотим постоянного соединения между нашим «старым» репозиторием GitHub и нашим «новым» репозиторием Azure Repos. Чтобы настроить эту интеграцию, Вам необходимо выполнить следующие предварительные требования:
- Аккаунт GitHub;
- Подписка Microsoft Azure;
- Организация и проект Azure DevOps;
- Подключение сервиса к Microsoft Azure.
Из репозитория Azure в пустом проекте мы можем либо клонировать (скопировать) репозиторий GitHub в репозиторий Azure, либо выполнить импорт. Мы выбрали бы клонирование, если бы хотели отправить коммиты кода Azure Repos на GitHub, но для наших целей мы сделаем импорт.
Я покажу выполненные шаги на следующем снимке экрана.
В этой статье мы используем один из примеров с репозитория GitHub (приложение-калькулятор написанное на Node.js). Вы можете использовать любое другой публичный или частный репозиторий GitHub.
Заходим в раздел меню Repos -> Files (1), нажимаем на кнопку «Import» (2), в открывшейся форме вставляем ссылку на репозиторий GitHub (3) и нажимаем на кнопку «Import».
Теперь, когда копия репозитория GitHub находится в Azure Repos, вы можете предоставить URL-адрес клона членам вашей группы, чтобы они могли работать с базой кода локально. Я покажу вам этот процесс на следующем снимке экрана.
Заходим в раздел Repos -> Files (1), нажимаем на кнопку с 3-мя точками на против названия проекта (2), выбираем пункт Clone (3) и копируем ссылку на репозиторий (4).
Интегрируйте GitHub с Azure Pipelines
Одной из отличительных черт DevOps, в целом, и Azure DevOps, в частности, является возможность создания полностью или частично автоматизированного процесса сборки и выпуска приложения/инфраструктуры.
Например, мы можем хранить не только исходный код нашего приложения в нашем репозитории Azure Repos, но и сопутствующую инфраструктуру Azure (в форме шаблонов JSON Azure Resource Manager) и даже файл YAML конвейера.
В следующем примере мы подключим приложение калькулятора к нашей учетной записи GitHub, а затем настроим конвейер сборки непрерывной интеграции (CI) в Azure DevOps.
Идея состоит в том, что каждый раз, когда вы или ваш коллега делаете фиксацию в основной ветке в вашей вилке GitHub, Azure Pipelines будет запускать автоматизированный процесс сборки для приложения. Затем вы можете использовать Azure Pipelines для создания конвейера непрерывного развертывания (CD), чтобы разместить приложение в реальной работающей инфраструктуре.
На следующем составном снимке экрана вы можете увидеть, как мы подключаем образец приложения калькулятора GitHub к моей собственной учетной записи GitHub. Преимущество разветвления заключается в том, что у нас может не быть доступа участников к исходному репозиторию. Разветвляясь, мы можем вносить изменения и, при желании, отправлять эти изменения в вышестоящий репозиторий для возможного слияния. GitHub называет этот процесс запроса слияния/проверки/утверждения запросом на перенос.
Наша следующая задача - установить инструмент Azure Pipelines из GitHub Marketplace. Вам нужно будет пройти несколько экранов согласия OAuth2 и войти в свою организацию и проект Azure DevOps с соответствующими учетными данными.
После связывания инструмента GitHub Azure Pipelines с целевым проектом Azure DevOps вы получите определение сборки YAML Azure Pipelines, которое запускается при фиксации кода на основе репозитория GitHub. Вот пример:
- A: Azure DevOps хранит ваши конвейеры сборки и выпуска в разделе «Pipelines -> Pipelines».
- B: Обратите внимание, что в этом примере и YAML конвейера, и исходный код нашего приложения находятся на GitHub. Конечно, вы можете создавать Azure Pipelines на основе кода в Azure Repos.
- C: Здесь мы указываем, какая ветвь связана с запуском процесса автоматической сборки.
- D: Azure DevOps запускает размещенные виртуальные машины для выполнения вашего конвейера CI. Одно из ценностных предложений Azure DevOps заключается в том, что вам не нужно размещать собственные серверы сборки локально.
- E, F: этот простой конвейер сначала устанавливает Node.js и все зависимости для конкретного приложения. Конечно, у вас будут разные шаги в зависимости от технологического стека вашего приложения.
На следующем снимке экрана вы можете увидеть, как мы отслеживаем свой процесс сборки Azure Pipelines на портале Azure DevOps.
Подведение итогов
Я знаю, что это звучит банально, но мы действительно только прикоснулись к тому, сколько возможностей интеграции GitHub-Azure DevOps существует, Вы также можете заказать интеграцию с Azure на нашей странице.