Поиск по сайту:

Стоит ли использовать действия Github для непрерывной интеграции (CI)?


Непрерывная интеграция имеет решающее значение для любого активного репозитория, который требует рутинной сборки и тестирования. Github поддерживает конвейеры непрерывной интеграции в форме Github Actions — сборок, которые запускаются в облаке автоматически, с небольшой настройкой.

Что такое непрерывная интеграция?

В то время как некоторые кодовые базы, такие как определенные веб-приложения, могут быть развернуты непосредственно из их исходных файлов, другие требуют дополнительной обработки, компиляции и, что наиболее важно, модульного тестирования. Эти сборки могут быть сложными и даже ресурсоемкими в случае таких языков, как C++.

Непрерывная интеграция — это процесс автоматизации тестирования и создания новых коммитов для вашего исходного кода. Обычно это используется с программным обеспечением, таким как Jenkins, работающим на «сервере сборки», который будет выполнять фактическую компиляцию.

Автоматическая компиляция кода — настолько полезная услуга для разработчиков программного обеспечения, что теперь ее предлагают облачные провайдеры, в том числе Github, где она прекрасно интегрируется с остальными их сервисами.

Что такое действия Github?

Github Actions — это облачные задачи, которые можно использовать для автоматизации вашего репозитория. Они обычно используются для запуска автоматических сборок для новых коммитов или выпусков, что может быть полезно для непрерывного тестирования программного обеспечения. Однако их также можно использовать для автоматизации, не связанной с CI, например для работы с проблемами и запросами на включение, запуском заданий cron или запуском команд на основе действий в вашей учетной записи.

Что касается CI, действия Github весьма полезны. Для большинства конвейеров непрерывной интеграции требуется установка сложного программного обеспечения, такого как Jenkins, или использование определенного облачного сервиса, такого как AWS CodePipeline. Действия Github очень просты и требуют, чтобы вы зафиксировали файл конфигурации в .github/workflows/ , чтобы активировать действие.

Вдобавок ко всему, Github обычно может понять, какой проект вы делаете, и предложить варианты конфигураций действий из своей библиотеки примеров. Например, этот Java-проект был запущен и запущен с автоматической сборкой всего за несколько минут с небольшими изменениями для

Вы можете иметь несколько действий в одном и том же репо; например, вы хотите настроить автоматические сборки для каждой фиксации в ветке dev , но вам нужны сборки только для каждого нового выпуска с тегами в ветке master . Вы можете создать два отдельных файла YAML с разными критериями.

Хотя действия очень полезны для сборки и тестирования, они также могут запускать команды и подключаться к другим службам, что также позволяет им автоматизировать процессы доставки и развертывания. Например, у вас может быть действие в ветке release, которое принимает каждый новый выпуск с тегами и загружает его на ваши серверы для развертывания.

По умолчанию сборки Github Actions будут публиковать артефакты сборки (независимо от того, что было выведено в процессе сборки) в zip-файл для каждого запуска. Это хорошо работает, если вы просто запускаете тесты, но если вы хотите выполнять автоматическую доставку, вы также можете настроить их для автоматической публикации новых выпусков или отправки в реестр пакетов/контейнеров, таких как NPM или Docker Hub.

Точная конфигурация вашего репозитория будет варьироваться в зависимости от вашего процесса сборки, но Github хорошо справляется с предоставлением надежных примеров для начала, и общая настройка в основном такая же. Если вы хотите узнать больше о том, как начать работу с GH Actions, вы можете прочитать наше руководство по их настройке.

Цены на действия Github

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

Для частных репозиториев каждая учетная запись автоматически имеет 2000 минут времени сборки каждый месяц, что очень щедро. Это почти полтора дня непрерывной сборки, поэтому вам придется делать несколько очень длинных сборок — или тонны коммитов — чтобы достичь этого числа. У вас больше шансов достичь предела в 500 МБ для бесплатных аккаунтов. Однако, если вы работаете над каждым коммитом, с длительным временем сборки и частыми коммитами, вы можете исчерпать это число.

Пользователи Github Pro (4 доллара в месяц) получают 3000 минут и 1 ГБ хранилища, как и организации, использующие план Github Team, который составляет 4 доллара на пользователя в месяц.

Github Enterprise, который стоит 21 доллар США на пользователя в месяц, дает 50 000 минут минут сборки, что составляет 35 дней сборки подряд, что позволяет запускать сборки 24/7, а затем и несколько.

Если вы перейдете на какой-либо план, вам просто будет выставлен счет за дополнительные использованные минуты. Цены довольно справедливые: дополнительные 2000 минут стоят 16 долларов.

Должны ли вы использовать действия или свой собственный сервер сборки?

CI/CD начинается с отслеживания версий. Автоматические сборки обычно запускаются для каждой фиксации или основного выпуска, и большинство автономных серверных систем сборки, таких как Jenkins или TeamCity, будут интегрироваться с вашим репозиторием git, чтобы обеспечить эту функциональность.

Это делает собственное решение CI от Github довольно полезным по сравнению с ним — оно интегрировано непосредственно в сервис, который вы уже используете, и его чрезвычайно просто настроить и запустить. Все, что вам нужно сделать, это зафиксировать файл конфигурации сборки в папке .github , и Github возьмет его и запустит. Хотя автономные службы могут быть полезны для корпоративных развертываний, для обычного пользователя простота использования Github Actions проще, чем даже установка собственного сервера сборки.

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

С учетом сказанного, Github Actions не так полнофункционален, как запуск собственного сервера для него, и если вы выполняете много обычных или сложных сборок, вам следует подумать о настройке сервера Jenkins. Если вы выполняете много сборок с интенсивным использованием ЦП, Jenkins также может быть полезен для этого, но Github Actions также поддерживает использование вашего собственного сервера для запуска сборок.