Бьюсь об заклад, вы знаете много платформ 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 - компания по разработке программного обеспечения, специализирующаяся на интерфейсной части сложных веб-приложений и перспективных передовых технологиях.