Что такое GitHub Actions и как их настроить: Полное руководство для начинающих
GitHub Actions – это мощный инструмент для автоматизации задач, связанных с разработкой программного обеспечения. Он позволяет создавать и управлять процессами непрерывной интеграции (CI) и непрерывной доставки (CD) прямо в вашем репозитории на GitHub. В этой статье мы рассмотрим основы GitHub Actions, покажем, как настроить первые действия, и обсудим, как его возможности могут улучшить рабочий процесс разработки.
Что такое GitHub Actions?
GitHub Actions — это платформа для автоматизации рабочих процессов, тесно интегрированная с GitHub. Она позволяет выполнять определённые действия (actions) в ответ на события, происходящие в репозитории. Например, вы можете настроить выполнение тестов каждый раз, когда код отправляется в репозиторий, или автоматическое развертывание приложения после успешного слияния веток.
Основные концепции GitHub Actions:
- Workflow (рабочий процесс) — это последовательность действий, которые запускаются в ответ на определённое событие.
- Event (событие) — это триггер, запускающий workflow. Примеры событий: создание pull request, push в ветку или установка тега.
- Job (задача) — это набор шагов, которые выполняются на определённой виртуальной среде. Задачи могут выполняться параллельно или последовательно.
- Step (шаг) — это отдельный этап выполнения в рамках задачи. Шаги могут быть выполнены с использованием предопределённых действий или ваших собственных сценариев (скриптов).
- Action (действие) — это отдельный блок кода, который выполняет конкретную задачу, например, установка зависимости или запуск тестов.
Зачем использовать GitHub Actions?
- Автоматизация рутинных задач: GitHub Actions позволяет автоматизировать такие задачи, как сборка, тестирование и развертывание приложения, что экономит время разработчиков.
- Непрерывная интеграция и доставка: CI/CD позволяет автоматически тестировать и развертывать приложения каждый раз, когда происходит изменение в коде.
- Легкость настройки: Рабочие процессы настраиваются с использованием YAML-файлов, что упрощает их создание и редактирование прямо в репозитории.
- Интеграция с GitHub: Поскольку GitHub Actions тесно интегрирован с платформой GitHub, разработчики получают более простую и понятную настройку.
Как настроить GitHub Actions?
Теперь давайте пошагово разберем процесс настройки GitHub Actions для вашего проекта.
Шаг 1: Создание рабочего процесса
Все рабочие процессы описываются в YAML-файлах. Эти файлы хранятся в каталоге .github/workflows вашего репозитория. Каждый workflow файл определяет, когда и как должны запускаться определённые действия.
- В вашем репозитории создайте директорию .github/workflows, если её ещё нет.
- Создайте файл с расширением .yml в этой директории, например, ci.yml.
- Откройте этот файл и начните с основного шаблона:
name: CI Workflow
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- run: npm install
- run: npm test
Этот пример настроен для запуска CI-процесса при каждом push в ветку main или при создании pull request. Он выполняет следующие действия:
- Загружает код вашего репозитория с помощью действия actions/checkout.
- Устанавливает Node.js версии 14.
- Устанавливает зависимости вашего проекта с помощью npm install.
- Запускает тесты с помощью npm test.
Шаг 2: Определение триггеров
Триггеры или события определяют, когда будет запущен рабочий процесс. Наиболее часто используемые события:
- push: Запускает workflow при отправке новых коммитов в указанные ветки.
- pull_request: Запускает процесс при создании или изменении pull request.
- schedule: Позволяет запускать workflow по расписанию, например, ежедневно или еженедельно.
- workflow_dispatch: Позволяет вручную запускать рабочий процесс через интерфейс GitHub.
Пример настройки события по расписанию:
on:
schedule:
- cron: '0 0 * * *' # Ежедневный запуск в полночь по UTC
Шаг 3: Задачи и среды выполнения
Каждая задача выполняется на виртуальной машине, и вы можете указать, на какой среде она будет запущена с помощью параметра runs-on. Доступные варианты:
- ubuntu-latest
- windows-latest
- macos-latest
Пример запуска задачи на Windows:
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Run tests on Windows
run: npm test
Вы также можете настроить последовательное выполнение задач. Например, задача test будет выполняться только после успешного выполнения задачи build:
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: npm install
test:
runs-on: ubuntu-latest
needs: build
steps:
- run: npm test
Шаг 4: Добавление шагов и действий
Внутри задачи вы определяете шаги (steps), которые могут включать:
- Выполнение командных скриптов (run).
- Использование готовых действий из GitHub Marketplace.
Пример использования нескольких шагов:
steps:
- uses: actions/checkout@v2
- name: Установка зависимостей
run: npm install
- name: Запуск тестов
run: npm test
Действие может быть либо предопределённым, как в примере с actions/checkout, либо кастомным — вы можете создавать свои собственные действия.
Шаг 5: Использование секретов и переменных окружения
Часто рабочие процессы требуют использования конфиденциальных данных, таких как токены API. В GitHub Actions можно сохранять секреты (secrets) и переменные окружения, чтобы не хранить их напрямую в файлах.
Для добавления секрета:
- Перейдите в настройки репозитория (Settings).
- Выберите раздел Secrets и нажмите кнопку New repository secret.
- Введите имя и значение секрета.
Пример использования секрета в workflow:
steps:
- name: Deploy to production
run: npm run deploy
env:
API_TOKEN: ${{ secrets.API_TOKEN }}
Шаг 6: Параллельное выполнение задач
GitHub Actions поддерживает параллельное выполнение задач, что позволяет значительно ускорить рабочие процессы. Для этого можно настроить несколько задач в одном workflow.
Пример:
jobs:
build-linux:
runs-on: ubuntu-latest
steps:
- run: npm install
build-windows:
runs-on: windows-latest
steps:
- run: npm install
В этом примере задачи build-linux и build-windows будут выполняться параллельно на разных операционных системах.
Шаг 7: Кэширование зависимостей
Для ускорения рабочего процесса можно использовать кэширование зависимостей. Например, кэширование пакетов npm:
- name: Cache node modules
uses: actions/cache@v2
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
Это действие сохраняет кэш зависимостей между запусками рабочих процессов, что значительно сокращает время установки зависимостей.
Примеры реальных сценариев использования
- Автоматическое тестирование при pull request: Каждый раз, когда разработчик отправляет pull request, GitHub Actions может автоматически запускать тесты, чтобы убедиться, что изменения не ломают код.
- Автоматическое развертывание на сервере: После успешного слияния изменений в ветку main, можно автоматически развернуть приложение на сервере с помощью деплой-сценария.
- Ежедневные отчёты о состоянии кода: Используя расписание, можно настроить ежедневные проверки и генерацию отчётов о состоянии репозитория.
Заключение
GitHub Actions — это мощный и гибкий инструмент, который значительно упрощает процессы непрерывной интеграции и доставки в проектах на GitHub. Он позволяет автоматизировать рутинные задачи, снижает количество ошибок и ускоряет цикл разработки. Даже если вы только начинаете работать с GitHub Actions, настроить базовый рабочий процесс не
сложно — достаточно следовать инструкциям и постепенно добавлять новые действия по мере необходимости.
Если вы освоите GitHub Actions на базовом уровне, то со временем сможете внедрять более сложные рабочие процессы, которые повысят эффективность вашей команды и автоматизируют множество задач.
Комментарии