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