Что такое GitHub Actions и как их настроить: Полное руководство для начинающих

На список статей
Blog image

Защитите свои сайты с My-Sites-Guard.com!
Сервис обеспечивает надежную защиту ваших веб-ресурсов: мониторинг доступности сайта, контроль валидности сертификатов, а также возможность собирать и анализировать логи работы сервера. My-Sites-Guard.com — всё для сохранности вашего сайта и спокойствия в работе!

GitHub Actions – это мощный инструмент для автоматизации задач, связанных с разработкой программного обеспечения. Он позволяет создавать и управлять процессами непрерывной интеграции (CI) и непрерывной доставки (CD) прямо в вашем репозитории на GitHub. В этой статье мы рассмотрим основы GitHub Actions, покажем, как настроить первые действия, и обсудим, как его возможности могут улучшить рабочий процесс разработки.

Что такое GitHub Actions?

GitHub Actions — это платформа для автоматизации рабочих процессов, тесно интегрированная с GitHub. Она позволяет выполнять определённые действия (actions) в ответ на события, происходящие в репозитории. Например, вы можете настроить выполнение тестов каждый раз, когда код отправляется в репозиторий, или автоматическое развертывание приложения после успешного слияния веток.

Основные концепции GitHub Actions:

  1. Workflow (рабочий процесс) — это последовательность действий, которые запускаются в ответ на определённое событие.
  2. Event (событие) — это триггер, запускающий workflow. Примеры событий: создание pull request, push в ветку или установка тега.
  3. Job (задача) — это набор шагов, которые выполняются на определённой виртуальной среде. Задачи могут выполняться параллельно или последовательно.
  4. Step (шаг) — это отдельный этап выполнения в рамках задачи. Шаги могут быть выполнены с использованием предопределённых действий или ваших собственных сценариев (скриптов).
  5. Action (действие) — это отдельный блок кода, который выполняет конкретную задачу, например, установка зависимости или запуск тестов.

Зачем использовать GitHub Actions?

  1. Автоматизация рутинных задач: GitHub Actions позволяет автоматизировать такие задачи, как сборка, тестирование и развертывание приложения, что экономит время разработчиков.
  2. Непрерывная интеграция и доставка: CI/CD позволяет автоматически тестировать и развертывать приложения каждый раз, когда происходит изменение в коде.
  3. Легкость настройки: Рабочие процессы настраиваются с использованием YAML-файлов, что упрощает их создание и редактирование прямо в репозитории.
  4. Интеграция с GitHub: Поскольку GitHub Actions тесно интегрирован с платформой GitHub, разработчики получают более простую и понятную настройку.

Как настроить GitHub Actions?

Теперь давайте пошагово разберем процесс настройки GitHub Actions для вашего проекта.

Шаг 1: Создание рабочего процесса

Все рабочие процессы описываются в YAML-файлах. Эти файлы хранятся в каталоге .github/workflows вашего репозитория. Каждый workflow файл определяет, когда и как должны запускаться определённые действия.

  1. В вашем репозитории создайте директорию .github/workflows, если её ещё нет.
  2. Создайте файл с расширением .yml в этой директории, например, ci.yml.
  3. Откройте этот файл и начните с основного шаблона:
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) и переменные окружения, чтобы не хранить их напрямую в файлах.

Для добавления секрета:

  1. Перейдите в настройки репозитория (Settings).
  2. Выберите раздел Secrets и нажмите кнопку New repository secret.
  3. Введите имя и значение секрета.

Пример использования секрета в 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-

Это действие сохраняет кэш зависимостей между запусками рабочих процессов, что значительно сокращает время установки зависимостей.

Примеры реальных сценариев использования

  1. Автоматическое тестирование при pull request: Каждый раз, когда разработчик отправляет pull request, GitHub Actions может автоматически запускать тесты, чтобы убедиться, что изменения не ломают код.
  2. Автоматическое развертывание на сервере: После успешного слияния изменений в ветку main, можно автоматически развернуть приложение на сервере с помощью деплой-сценария.
  3. Ежедневные отчёты о состоянии кода: Используя расписание, можно настроить ежедневные проверки и генерацию отчётов о состоянии репозитория.

Заключение

GitHub Actions — это мощный и гибкий инструмент, который значительно упрощает процессы непрерывной интеграции и доставки в проектах на GitHub. Он позволяет автоматизировать рутинные задачи, снижает количество ошибок и ускоряет цикл разработки. Даже если вы только начинаете работать с GitHub Actions, настроить базовый рабочий процесс не

сложно — достаточно следовать инструкциям и постепенно добавлять новые действия по мере необходимости.

Если вы освоите GitHub Actions на базовом уровне, то со временем сможете внедрять более сложные рабочие процессы, которые повысят эффективность вашей команды и автоматизируют множество задач.

Комментарии

Пока нет комментариев

Добавить комментарий