Best Hosted Continuous Integration Services for a Private Repository

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

Каждый проект, с которым я работаю, начинается с настройки непрерывной интеграции. Я являюсь большим поклонником облачных сервисов, поэтому всегда использовал Travis. Несколько моих клиентов недавно поставили под сомнение этот выбор, в основном из-за цены. Поэтому я решил провести краткий анализ рынка.

Я настроил Rultor, проект с открытым исходным кодом, на каждом найденном мной сервисе непрерывной интеграции. Все они бесплатны для проектов с открытым исходным кодом. Все они размещены на серверах и не требуют установки на собственный сервер. Вот они, в порядке моего личного предпочтения (первые четыре - лучшие и настоятельно рекомендуются):

Если вы знаете какие-либо другие хорошие службы непрерывной интеграции, напишите мне на электронную почту, и я рассмотрю и добавлю их в этот список. Кстати, вот “полный” список программного обеспечения и сервисов непрерывной интеграции.

Кстати, несколько платформ из этого списка связались со мной и попросили пересмотреть их снова. Некоторые даже предложили мне деньги, чтобы поместить их выше в списке (шучу). В любом случае, решать вам, является ли это хорошим знаком или нет (я думаю, что это хорошо, им важна своя репутация). Я пометил их в списке с помощью ☺ эмодзи.

Shippable был легким в настройке, так как он сразу понимает .travis.yml. Интерфейс пользователя легко навигировать, так как вообще нет “страницы настроек” (или я ее не нашел). Все настраивается через файл shippable.yml в репозитории. Сервис выглядит стабильным и надежным, пока нет никаких жалоб. Особенно круто в них то, что они позволяют вам собирать в контейнере Docker.

Travis - лучшая платформа, которую я когда-либо видел. В основном потому, что она самая популярная. Отлично интегрируется с GitHub и имеет надлежащую документацию. Одним из важных недостатков является цена в $129 в месяц. “За эти деньги вы можете получить выделенный экземпляр EC2 и установить на него Jenkins” - говорят некоторые мои клиенты. Я категорически не согласен, так как Jenkins потребует круглосуточного администрирования, что стоит гораздо больше, чем $129, но всегда сложно объяснить.

Wercker - это европейский продукт из Амстердама, который все еще находится в бета-версии и поэтому бесплатен для всех проектов. Платформа выглядит очень перспективной. Она все еще бесплатна для частных репозиториев и поддерживается инвестициями. У них также есть интересная концепция “build-боксов”, которые могут быть предварительно настроены, подобно контейнерам Docker. Она работает довольно стабильно в последние несколько месяцев, пока нет никаких жалоб.

AppVeyor - единственный, который выполняет сборки под Windows. Хотя я в основном работаю с Java и Ruby, которые ожидаются платформонезависимыми, они очень часто оказываются на самом деле противоположными. Когда ваша сборка проходит на Linux, почти нет гарантии, что она пройдет на Windows или Mac. Я планирую использовать AppVeyor в каждом проекте, в сочетании с другим сервисом CI. Вот как я интегрирую сборки Maven с AppVeyor.

SemaphoreApp легко настраивается и работает. Она создает впечатление легкой системы, что я в целом ценю. Как недостаток, у них нет ни одного предустановленного Maven есть старая версия Maven, но это легко решается с помощью короткого пользовательского скрипта, который загружает и распаковывает последнюю версию Maven. Еще одним недостатком является то, что они не настраиваются через файл (например, .travis.yml) - вы должны делать все через пользовательский интерфейс. Они также поддерживают кэширование между сборками.

Snap-CI - это продукт ThoughtWorks, автора Go, сервера непрерывной интеграции с открытым исходным кодом. Она выглядит немного сложнее, чем другие, позволяя вам определять “этапы” и объединять их в конвейеры. Я еще не уверен, как эти механизмы могут помочь в небольших и средних проектах, с которыми мы в основном работаем, но они выглядят “круто”. Есть также очень несчастное ограничение в 2 ГБ ОЗУ на сборку - некоторые из моих проектов на Java не проходят из-за этого. Кроме того, они не предоставляют полный доступ к серверу сборки, например, мы не можем изменять что-либо в /etc - это останавливает нас.

Codeship работает нормально, но их веб-интерфейс выглядит немного устаревшим. Кроме того, они обещают работать с pull-запросами, но мне не удалось настроить их. Они просто не уведомляют о наших pull-запросах в GitHub, хотя собирают их. Может быть, я найду способ, пока что это не ясно.

CircleCI Я все еще не знаю, почему моя сборка там не проходит. Очень сложно настроить и понять, что происходит. Пытаюсь разобраться…

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

Hosted-CI предназначен только для iOS/OSX. Они ничего не дают бесплатно, даже для проектов с открытым исходным кодом. У меня еще не было возможности их протестировать.

CloudBees в основном является размещенным Jenkins. Я действительно не люблю Jenkins, поэтому не могу рекомендовать эту платформу.

DeployBot даже не позволяет мне войти через GitHub, что? Они, кажется, больше ориентированы на “развертывание”, а не просто на непрерывную интеграцию.

Vexor выглядит хорошо и предлагает довольно уникальную модель оплаты - они берут плату за сборку, а не за месяц. Я определенно рекомендую попробовать. У меня не получилось заставить его работать…

GreenHouseCI - это платформа для непрерывной интеграции для мобильных приложений (iOS, Android и т. д.). Кажется интересной, просто у меня нет полноценного мобильного приложения, чтобы протестировать ее.

gitlab-ci: скоро будет рассмотрено

coverity.com: скоро будет рассмотрено и добавлено в список.

buddy.works: скоро будет рассмотрено.

AWS Code Build и AWS Code Deploy: скоро будет рассмотрено.

Ship.io мертв (на 20 сентября 2016 года).

ZeroCI.com мертв (на 28 августа 2016 года).

Drone.io больше не размещается, но является открытым исходным кодом (на 23 января 2017 года).

Hosted-ci не выглядит живым (на 16 апреля 2017 года).

Magnum-CI.com не выглядит живым (на 30 мая 2017 года).

Кстати, если вам не нравится идея использования непрерывной интеграции в облаке, рассмотрите следующие программные пакеты для использования на своем сервере (в порядке предпочтения): Jenkins, TeamCity, Go, Strider, BuildBot.

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

1 This means that the platform can build your repo in Linux environment. Almost all of them do that by default, unless you configure them otherwise.
2 Some of them can build on Windows platform.
3 MacOS support means that an Objective-C/Swift product can be built there.
4 I mean GitHub pull request support here. Some of them can be integrated with GitHub and will build pull requests before they are merged. Build status will be visible in GitHub. A pretty convenient feature.
5 Logs compression is a critical feature, at least for me. Most of my logs are from Maven and without col -b they look too long and unreadable.
6 Looks like Docker containers must be supported by all of them, but unfortunately it’s not the case. Ideally, all builds should run in containers.

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-11-17 at 17:16

sixnines availability badge   GitHub stars