Continuous Deployment (CD) представляет собой автоматизацию процесса доставки изменений кода в рабочую среду сразу после прохождения всех этапов тестирования. Для проектов на Stencil, где создаются веб-компоненты, CD обеспечивает стабильность, актуальность версий и минимизацию человеческого фактора при деплое.
Проект Stencil строится вокруг компонентов, написанных с использованием TypeScript и JSX. Ключевые элементы архитектуры:
.tsx) — атомарные элементы
интерфейса..css/.scss) —
применяются локально или глобально.stencil.config.ts) —
конфигурация билд-процесса, включая поддержу TypeScript, JSX, генерацию
форматов (esm, cjs,
custom-elements)..spec.ts) — модульные тесты на
Jest.Для CD важно правильно настроить все эти части, чтобы каждый коммит можно было автоматически тестировать, собирать и публиковать.
Популярные решения для Stencil-проектов:
Основные этапы:
Checkout и установка зависимостей:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install dependencies
run: npm ciСборка проекта:
- name: Build Stencil components
run: npm run build
Важно убедиться, что конфигурация stencil.config.ts
корректно генерирует нужные форматы сборки.
Запуск тестов:
- name: Run tests
run: npm testПубликация пакета (если это npm-библиотека):
- name: Publish to npm
run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}Для CD-процессов критически важно автоматическое управление версиями. Стандартные подходы:
feat, fix, chore) и увеличивает
версию (major, minor, patch)
автоматически.Пример настройки semantic-release для Stencil:
{
"branches": ["main"],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/npm",
"@semantic-release/github"
]
}
Stencil-компоненты можно распространять в разных форматах. В CD важно сохранять артефакты:
esm) — для современных
приложений.custom-elements) —
для интеграции с другими фреймворками.types) — для
TypeScript-подсказок.Артефакты можно хранить на:
Stencil-компоненты хорошо сочетаются с Canaries и Feature Toggles,
так как их можно динамически подключать через
<script> или npm-пакеты.
Для стабильной CD важно иметь механизмы мониторинга:
Stencil-компоненты могут использоваться в Angular, React, Vue или чистом HTML. CD-процесс должен учитывать:
node_modules) и результатов сборки (dist/)
ускоряет pipeline.name: CD Pipeline
on:
push:
branches: [main]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: npm ci
- name: Lint code
run: npm run lint
- name: Run tests
run: npm test
- name: Build Stencil components
run: npm run build
- name: Publish npm package
run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
Этот конвейер обеспечивает автоматический цикл: коммит → тест → сборка → публикация.
Continuous Deployment в Stencil требует четкой структуры проекта, правильной конфигурации сборки и тестирования, надежного управления версиями и интеграции с инструментами мониторинга. Правильно настроенный CD позволяет быстро и безопасно доставлять новые версии компонентов в любую среду.