Создано искусственным интеллектомУлучшено людьми

Riqli · живые документы · обновляются постоянно

Где знания об искусственном интеллекте встречаются с человеческой практикой.

Поделиться с друзьями
image

GitHub Actions

(github actions, ci/cd github actions, github actions примеры, github actions деплой на сервер, github actions secrets настройка, github actions docker build, github actions workflow_dispatch, github actions сборка react app и деплой на github pages, github actions запуск тестов при pull request в master)

разделы

Основы синтаксиса YAML для GitHub Actions

содержимое

YAML — это язык сериализации данных, который используется для написания Workflow в GitHub Actions. В отличие от JSON, он поддерживает комментарии, что делает код более читаемым и удобным для документирования. Основная структура файла — это единый корневой объект, который содержит ключи со значениями различных типов.

содержимое

В YAML значения могут быть строками, числами, булевыми значениями (true/false), массивами и вложенными объектами. Для отступов используются пробелы, а их количество критично для корректного синтаксиса, поэтому важно внимательно следить за форматированием. Для упрощения работы с синтаксисом рекомендуется устанавливать плагины для редакторов кода, которые подсвечивают ошибки.

разделы

Создание и настройка первого Workflow

содержимое

Для создания Workflow необходимо в корне репозитория создать каталог .github/workflows и поместить в него файл с расширением .yml или .yaml. Основные элементы инструкции: name (имя), on (событие-триггер) и jobs (задачи). Например, указав on: push, вы определите, что Workflow будет запускаться при каждом пуше в репозиторий.

содержимое

Внутри раздела jobs описываются задачи (jobs), которые могут выполняться параллельно или последовательно. Каждый job выполняется на виртуальной машине (runner), которую вы определяете с помощью параметра runs-on. Внутри job находятся шаги (steps), которые представляют собой либо команды оболочки, либо готовые actions.

разделы

Управление триггерами (Events) и фильтрация

содержимое

GitHub Actions поддерживает множество событий (events), таких как push, pull_request, schedule и другие. Для гибкой настройки можно использовать фильтры: branches, tags и paths, которые позволяют запускать Workflow только при определенных условиях, например, при пуше в конкретную ветку или при изменении файлов в определенной директории.

содержимое

Для ручного запуска предусмотрен триггер workflow_dispatch, который добавляет кнопку в интерфейсе GitHub для запуска инструкции по требованию. При этом можно передавать входные параметры (inputs), что позволяет делать выполнение более гибким. Также поддерживается запуск по расписанию с использованием синтаксиса cron.

разделы

Использование переменных, секретов и контекстов

содержимое

Переменные окружения в GitHub Actions используются для хранения конфигурационных данных и могут быть определены на уровне Workflow, job или step. Секреты (secrets) предназначены для хранения чувствительной информации, такой как пароли или токены, и шифруются. Контексты, например, github или env, предоставляют доступ к данным о репозитории, коммитах и переменных.

содержимое

Для условного выполнения шагов используется оператор if, который позволяет проверять значения контекстов и переменных. Например, можно выполнить шаг только в случае успешного завершения предыдущего job или при наличии определенного значения переменной. Это дает возможность создавать сложную логику и управлять потоком выполнения инструкций.

разделы

Кэширование, артефакты и матричные сборки

содержимое

Кэширование (caching) позволяет ускорить выполнение Workflow, сохраняя зависимости или результаты сборки между запусками. Артефакты (artifacts) используются для сохранения файлов, сгенерированных в процессе выполнения, и могут быть загружены для дальнейшего использования. Матричные сборки (matrix) позволяют запускать один и тот же job на разных версиях программного обеспечения или операционных систем, что упрощает тестирование.

содержимое

Матрица определяется в разделе strategy и содержит массив значений, например, версий Node.js. Используя контекст matrix, вы можете динамически подставлять эти значения в шаги. Это эффективный способ проверки совместимости приложения с различными окружениями без дублирования кода.

разделы

Создание собственных Actions и работа с Docker

содержимое

Actions — это переиспользуемые блоки кода, которые можно создавать для выполнения повторяющихся задач. Они бывают трех типов: composite actions (объединение шагов), JavaScript actions и Docker actions. Создание собственного action позволяет инкапсулировать логику и делиться ею между несколькими Workflow или репозиториями.

содержимое

Composite action — это самый простой способ создать собственный action, который объединяет несколько шагов в один. Для его создания необходимо в репозитории создать каталог и файл action.yml с описанием и шагами. Этот подход упрощает поддержку и повторное использование кода внутри проекта.

разделы

Практическая реализация CI/CD и управление лимитами

содержимое

На практике GitHub Actions позволяет реализовать полноценный конвейер CI/CD (непрерывная интеграция и доставка). В рамках одного Workflow можно автоматизировать установку зависимостей, сборку проекта, тестирование и развертывание на продакшен-сервер. Для контроля времени выполнения предусмотрены параметры timeout-minutes, которые ограничивают максимальную длительность job или step.

содержимое

Также можно ограничить одновременный запуск нескольких Workflow с помощью параметра concurrency, чтобы избежать конфликтов при развертывании. Например, можно настроить выполнение только последнего запущенного Workflow, отменяя все предыдущие. Эти механизмы помогают эффективно использовать выделенные ресурсы и предотвращать ошибки, связанные с параллельным выполнением.

разделы

Questions and answers


вопросы

Что такое YAML и какую роль он играет в GitHub Actions?

ответыПравильный

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

объяснения

В отличие от JSON, YAML позволяет использовать комментарии для документирования, что критически важно для поддержки сложных инструкций. Файл представляет собой корневой объект с ключами и значениями разных типов, а отступы пробелами влияют на синтаксис.

ответыНеправильный

YAML — это язык программирования, используемый для создания пользовательских интерфейсов в GitHub.

ответыНеправильный

YAML — это база данных для хранения артефактов сборки в GitHub Actions.


вопросы

Какие типы данных поддерживаются в YAML для описания Workflow?

ответыПравильный

Строки, числа, булевы значения (true/false), массивы и вложенные объекты.

объяснения

Эти типы образуют основу для описания конфигураций: массивы определяют шаги или ветки, а вложенные объекты группируют параметры job или action. Пробелы для отступов обязательны, иначе файл становится невалидным.

ответыНеправильный

Только строки и числа, булевы значения не поддерживаются.

ответыНеправильный

Только массивы и объекты, простые типы не разрешены.


вопросы

Где должен располагаться файл Workflow и какое расширение он должен иметь?

ответыПравильный

Файл должен находиться в каталоге .github/workflows в корне репозитория и иметь расширение .yml или .yaml.

объяснения

Это стандартное расположение, которое GitHub сканирует для обнаружения инструкций. Расширение может быть любым из двух, но важно соблюдать синтаксис YAML внутри файла.

ответыНеправильный

Файл должен быть в корне репозитория и иметь расширение .json.

ответыНеправильный

Файл должен быть в папке .github и иметь расширение .txt.


вопросы

Какие основные элементы определяют структуру Workflow?

ответыПравильный

name (имя), on (событие-триггер) и jobs (задачи).

объяснения

Это обязательные поля: name задает имя инструкции, on определяет, когда она будет запускаться, а jobs содержит набор задач, которые выполняются на виртуальных машинах.

ответыНеправильный

Только name и on, jobs не обязателен.

ответыНеправильный

Только jobs и steps, name и on не нужны.


вопросы

Какие события (events) могут запускать Workflow?

ответыПравильный

push, pull_request, schedule и workflow_dispatch.

объяснения

Это основные типы триггеров: push на коммиты, pull_request для запросов на слияние, schedule для запуска по расписанию и workflow_dispatch для ручного запуска с параметрами через интерфейс GitHub.

ответыНеправильный

Только push и pull_request, остальные не поддерживаются.

ответыНеправильный

Только schedule и workflow_dispatch, push и pull_request игнорируются.


вопросы

Как можно фильтровать запуск Workflow по веткам, тегам или путям?

ответыПравильный

Использовать фильтры branches, tags и paths в разделе on.

объяснения

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