Continuous Integration (CI) представляет собой практику частого слияния изменений кода в общий репозиторий с последующей автоматической проверкой и тестированием. Для проектов на Riot.js CI играет критически важную роль, обеспечивая стабильность компонентов, корректность рендеринга и консистентность состояния приложения.
Для автоматизации процесса сборки и тестирования необходимо подготовить окружение:
.github/workflows/ci.yml, для GitLab —
.gitlab-ci.yml. В этих файлах задаются шаги сборки,
тестирования и деплоя.Riot.js поддерживает сборку через компилятор Riot CLI или Webpack. В CI пайплайне необходимо:
Выполнять установку зависимостей:
npm ci
или
yarn install --frozen-lockfileКомпилировать компоненты с помощью команды:
riot src/ dist/
или через Webpack:
webpack --config webpack.config.jsПроверять корректность сборки и отсутствие ошибок синтаксиса.
Тестирование компонентов является ключевым аспектом CI. Riot.js компоненты тестируются с использованием Jest, Mocha или Cypress:
Jest позволяет проверять рендеринг и поведение компонентов:
import { component } from 'riot';
import MyComponent from '../src/my-component.riot';
test('Компонент рендерится корректно', () => {
const instance = component(MyComponent)(document.createElement('div'));
expect(instance.root.innerHTML).toContain('Hello Riot');
});Cypress подходит для end-to-end тестов пользовательского интерфейса. Настройка CI позволяет запускать их автоматически при каждом пуше или pull request.
Для поддержания качества кода в проекте Riot.js используется ESLint и Prettier. В CI пайплайне выполняются следующие шаги:
Проверка кода ESLint:
npx eslint src/**/*.js src/**/*.riotФорматирование с Prettier:
npx prettier --check "src/**/*.{js,riot}"Прерывание сборки при обнаружении ошибок или несоответствия стайлгайду.
После успешной сборки и тестирования CI пайплайн может автоматически задеплоить проект на staging или production сервер:
Для статических сайтов используется GitHub Pages или Netlify:
- name: Deploy to Netlify
uses: netlify/actions/cli@master
with:
args: deploy --dir=distДля серверных приложений возможна интеграция с Docker и Kubernetes:
- name: Build Docker image
run: docker build -t myapp:${{ github.sha }} .
- name: Push to registry
run: docker push myapp:${{ github.sha }}Эффективный CI предусматривает уведомления при сбоях:
Continuous Integration позволяет автоматически поддерживать качество кода, сокращает количество багов и ускоряет релизы. Для Riot.js критически важно тестирование компонентов на уровне юнитов и интеграции, автоматизация сборки и деплоя, а также строгий контроль стиля кода. Правильно настроенный пайплайн CI становится центральным инструментом, обеспечивающим надёжность и стабильность фронтенд-проектов.