Skip to content

📘 GitHub Actions


1. Общие сведения

Наименование:
GitHub Actions

Описание:
GitHub Actions — это платформа для автоматизации разработки и доставки приложений (CI/CD), встроенная непосредственно в GitHub. Позволяет создавать настраиваемые рабочие процессы (workflows), которые запускаются при определённых событиях в репозитории (например, push, pull request, issue и др.).

Тип системы:
Платформа автоматизации / Сервер непрерывной интеграции и доставки
Класс: CI/CD Tool

Разработчик:
GitHub Inc. (часть Microsoft)

Год выпуска:
2019 год (общедоступный релиз)

Лицензия:
Proprietary (платформа), но workflows и действия (actions) могут быть открытыми

Сайт: https://github.com/features/actions


2. Основные компоненты

Компонент Описание
Workflow (рабочий процесс) Автоматизированный процесс, состоящий из одного или нескольких jobs
Job (задача) Часть workflow'а, которая выполняется на одном runner'e
Step (шаг) Отдельное действие в рамках job'a (может быть командой или action'ом)
Action (действие) Настройка или повторно используемый шаг (могут быть своими или community-разработками)
Runner Виртуальная машина или самонастроенный сервер, на котором выполняются workflow'ы
Event (событие) Триггер, который запускает workflow (например: push, pull_request, issue_comment и т.д.)

3. Основные функции

Функция Описание
Автоматизация CI/CD Сборка, тестирование и деплой приложений
Интеграция с GitHub Полностью встроен в систему контроля версий
Многоплатформенность Поддерживает Windows, Linux, macOS
Работа с контейнерами Запуск Docker-образов внутри workflow
Поддержка языков и фреймворков Java, Python, Node.js, .NET, Go, Ruby, Rust и др.
Веб-интерфейс Удобное управление через GitHub UI
Marketplace действий Более 10 000 готовых actions от GitHub и сообщества
Уведомления Email, Slack, внутренние уведомления GitHub о результате выполнения задач

4. Пример workflow (.github/workflows/ci.yml)

name: CI Pipeline

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'

      - name: Install dependencies
        run: npm install

      - name: Run tests
        run: npm test

      - name: Build project
        run: npm run build

5. Преимущества использования GitHub Actions

Полная интеграция с GitHub – не нужно внешних систем
Простота настройки – достаточно добавить YAML-файл в .github/workflows
Большое количество готовых actions – можно использовать сразу
Масштабируемость – легко расширять под любые нужды
Подходит для любого стека технологий – нет ограничений по языкам
Бесплатный план – для публичных репозиториев и ограниченного количества минут на приватные
GitOps подход – вся конфигурация хранится в коде


6. Использование в проектах

Этап Возможности
Разработка Автоматическая сборка и проверка кода при каждом коммите
Тестирование Запуск unit-, интеграционных и end-to-end тестов
Деплой Автоматическое обновление тестовой, staging и production сред
CI/CD pipeline Полностью автоматизированный жизненный цикл разработки
Мониторинг и отчеты Логи, метрики и уведомления об успехах или сбоях
Обучение Отличный инструмент для изучения DevOps-процессов и GitOps подхода

7. Альтернативы GitHub Actions

Инструмент Особенности
Jenkins Мощный open-source CI/CD с гибкой настройкой
GitLab CI/CD Встроенный CI/CD в GitLab, удобен при использовании GitLab как VCS
CircleCI Облачный CI/CD с мощными возможностями параллелизма
Travis CI Простой и легковесный облачный CI
Azure DevOps Pipelines Microsoft-решение с мощной интеграцией в Azure
TeamCity (JetBrains) Простой в освоении, особенно популярен среди Java-разработчиков

8. Интеграции

Интеграция Описание
Docker Hub / GitHub Container Registry Сборка и публикация образов
Kubernetes Деплой в кластеры через Helm, kubectl и другие средства
AWS / GCP / Azure Интеграция через официальные actions
Slack / MS Teams / Email Уведомления о состоянии сборок
SonarQube Анализ качества кода
Artifactory / Nexus Хранение бинарных артефактов
Terraform / Ansible Автоматизация инфраструктуры и конфигураций