раздел 03
Автоматизация
GitHub умеет не только хранить код, но и сам что-то с ним делать: гонять тесты, собирать проект, выкатывать на сервер, обновлять зависимости. Это экономит время и убирает ручную рутину.
GitHub Actions
GitHub Actions - встроенный механизм CI/CD. CI/CD это автоматический запуск проверок и деплоя при изменениях в коде. Настраивается через workflow-файлы - YAML-файлы в папке .github/workflows/ репозитория.
Простой workflow, который запускает тесты при каждом push:
# .github/workflows/test.yml
name: Tests
on:
push:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install
- run: npm test
После такого файла GitHub при каждом push в main поднимет виртуальную машину, установит зависимости и прогонит тесты. Результат виден во вкладке Actions.
GitHub Pages
GitHub Pages - бесплатный хостинг статических сайтов прямо из репозитория. Подходит для лендингов, документации, портфолио. Включается в Settings -> Pages: указываете ветку и папку, GitHub публикует сайт по адресу вида username.github.io/repo. Динамический бэкенд так не захостить - только статика.
Секреты
В коде нельзя держать токены, пароли и API-ключи - они утекут в историю и станут публичными. Для этого есть секреты: Settings -> Secrets and variables -> Actions. Туда складываете значения, а в workflow обращаетесь к ним по имени.
steps:
- run: ./deploy.sh
env:
API_TOKEN: ${{ secrets.API_TOKEN }}
Dependabot
Dependabot - встроенный помощник, который следит за зависимостями проекта. Он находит устаревшие и уязвимые библиотеки и сам открывает Pull Request с обновлением. Включается в настройках безопасности репозитория. Удобно, чтобы проект не зарастал старыми пакетами с дырами.