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

CI - это не ракетостроение, вы не должны читать документы дольше получаса, чтобы проводить тесты оптимальным образом!

Вам, как разработчику javascript, нужно что-то, предназначенное только для… javascript! Без необходимости указывать платформу ОС для описания шагов перед сборкой, таких как npm install, кеширование, процесс проверки github и все остальное, повторяющееся в миллионах проектов javascript.

Сегодня мы запускаем Zerber в режиме бета-тестирования. Zerber - это платформа CI, оптимизированная для javascript. Только javascript, больше ничего. И вот ключевые особенности Zerber.

Это просто

{
  "lint": {
    "command"   : "lint",
    "isPartial" : true,
    "fileRegexp": "\\.js$",
    "title"     : "Lint JS"
  },

  "test": {
    "command": "test",
    "title"  : "Test JS"
  }
}

Это оно! Определены два шага, каждый из которых запускает скрипт из ваших package.json - npm run lintcss и npm run test. Один из шагов будет выполняться только в том случае, если в ветке изменены css-файлы. И он будет работать только с измененными файлами.

Интегрируется с Github

Каждый шаг будет отображаться на странице Github Pull Request как отдельная проверка. Прямо из коробки ничего настраивать не нужно.

Может развертываться на множестве целевых платформ

При запуске в бета-версии мы поддерживаем развертывание в

  • Docker Hub - да, вы можете создавать контейнеры докеров с помощью Zerber!
  • Heroku
  • и копирование файлов через scp.

Наша цель - расширить этот список при запуске в производство. Сообщите нам в комментариях, какие цели развертывания вы лично хотели бы видеть в этом списке.

Браузеры и node.js

Zerber одинаково хорошо работает как с браузером, так и со средой node.js. Все, что он делает, - это запускает npm команд из package.json и уведомляет Github о результатах.

Параллельный из коробки

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

Что изменится к дате выхода?

  • Как упоминалось выше, мы будем выполнять шаги сборки параллельно. Это должно значительно сократить время сборки.
  • Пользовательский интерфейс будет доработан, чтобы обеспечить лучший обзор всех ваших сборок и сделать навигацию между сборками намного проще и понятнее.
  • Мы представим Zerber как приложение Github, что сделает его интеграцию удобной как для организаций, так и для отдельных пользователей.

Пример из реальной жизни

Допустим, вам нужно запустить несколько js-тестов и js-линтер (или prettier, или любой другой инструмент, который вы используете для проверки качества кода), а затем создать образ Docker, после чего отправить его в Docker Hub.

Вот zerber.json - конфигурационный файл, который нужно поместить в корень вашего приложения:

{
  "deploy": {
    // Run this step only in master branch
    "branch": "master",
    "command": "deploy",
    // Deployment steps will run only after other steps complete
    // successfully
    "isDeploy": true,
    "title": "Deploy to Docker Hub"
  },
"lint": {
    "command"   : "lint",
    "isPartial" : true,
    "fileRegexp": "\\.js$",
    "title"     : "Lint JS"
  },
  "test": {
    "command": "test",
    "title": "Test JS"
  }
}

У вас должны быть все упомянутые команды в ваших package.json - deploy, lint и test.

{
  "name": "thisismyapp",
  "version": "1.0.0",
  "scripts": {
    "lint": "eslint",
    "test": "jest --env=jsdom",
    "deploy": "./bin/deploy.sh"
  }
}

deploy команда вызывает следующий сценарий bash:

#!/bin/bash
docker build -t hiiamjohn/thisismyapp:latest .
docker login -u "$DOCKER_USER" -p "$DOCKER_PASSWORD"
docker push "hiiamjohn/thisismyapp:latest"

Учитывая, что у вас есть Dockerfile в корне приложения, которое копирует приложение в контейнер и выполняет все шаги сборки внутри.

Zerber позволяет вам определять переменные среды сборки, которые будут доступны любой команде npm. По соображениям безопасности переменные среды не используются совместно на уровне ОС и передаются непосредственно команде npm.

Как стать бета-тестером?

Просто напишите нам по адресу [email protected] (или оставьте свой адрес электронной почты на сайте https://zerber.io/), где кратко опишите, какие задачи вы собираетесь выполнять в Zerber, или просто поделитесь ссылкой к репозиториям, к которым вы собираетесь его подключить.

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