Github actions
Github Actions - это система непрерывной интеграции (Continuous Integration - CI), которая позволяет запустить автоматическую процедуру проверки кода с использованием требуемых инструментов.
Непрерывная интеграция - это практика слияния небольших изменений кода, в отличие от слияния крупных кусков кода в конце цикла разработки. Целью является создание более стабильного программного обеспечения путем разработки и тестирования небольших кусков функционала.
В качестве системы непрерывной интеграции, Github Actions позволяет тестировать изменения кода, обеспечивая немедленную обратную связь. Github Actions также может автоматизировать другие части процесса разработки, например управлять развертыванием приложения на удаленном сервере.
Функционал Github Actions встроен в каждый репозиторий Github и может быть использован без каких-либо дополнительных интеграций с внешними сервисами.

Для того, чтобы подключить Github Actions к вашему GitHub репозиторию, необходимо добавить конфигурационный файл в ваш репозиторий. Для этого необходимо создать папку .github
в корне репозитория, внутри нее создать папку workflows
. В последней папке создаем файл ci.yml
. Данный файл будет описывать все необходимые шаги, которые должны быть выполнены в рамках сборки. После окончания сборки в вашем проекте автоматически будет отображен статус проверки. После добавления файла необходимо сделать коммит и залить файл на GitHub. Минимальная возможная проверка в нашем случае - запуск юнит тестов Мавеном. Для этого понадобится следующая конфигурация ci.yml
:
name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
javascript-ci-checks:
name: Automated Javascript CI checks
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Cache node modules
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Setup Node.js 16.8.0
uses: actions/setup-node@v3
with:
node-version: 16.8.0
- name: Install dependencies
run: npm install --prefix frontend
- name: Run build
run: npm run build --prefix frontend
Что делает данный код:
Клонирует репозиторий
Устанавливет Node.js указанной в файле версии (измените при необходимости)
Запускает команду
npm install
в папкеfrontend
проекта (от корня - измените путь при необходимости), чтобы установить все зависимостиnpm
Запускает команду
npm run build
в папкеfrontend
проекта, чтобы собрать проект. В рамках сборки вы можете выполнить дополнительній действия, такие как проверка Eslint, Stylelint и т.д., добавив соответствующие операции в файлеpackage.json
в скриптbuild
Кеширует скачанные зависимости npm, которые хранятся в папке
node_modules
, чтобы при следующей сборки они не устанавливались заново
После этого необходимо зайти в настройки GitHub репозитория, и включить проверку Github Actions в качестве обязательной перед слиянием ветки. Для того, чтобы эта опция стала доступна, на Github Actions должна пройти хотя бы одна сборка проекта (корректный файл ci.yml
должен быть залит на GitHub).

Более детальную информацию по настройке Github Actions можно найти в документации здесь.
Last updated