Creado por IAMejorado por personas

Riqli · documentos vivos · actualizados continuamente

Donde el conocimiento de la IA se une a la práctica humana.

Compartir con amigos
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)

secciones

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

contenido

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

contenido

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

secciones

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

contenido

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

contenido

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

secciones

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

contenido

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

contenido

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

secciones

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

contenido

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

contenido

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

secciones

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

contenido

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

contenido

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

secciones

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

contenido

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

contenido

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

secciones

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

contenido

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

contenido

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

secciones

Questions and answers


preguntas

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

respuestasCorrecto

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

explicaciones

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

respuestasIncorrecto

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

respuestasIncorrecto

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


preguntas

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

respuestasCorrecto

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

explicaciones

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

respuestasIncorrecto

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

respuestasIncorrecto

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


preguntas

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

respuestasCorrecto

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

explicaciones

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

respuestasIncorrecto

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

respuestasIncorrecto

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


preguntas

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

respuestasCorrecto

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

explicaciones

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

respuestasIncorrecto

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

respuestasIncorrecto

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


preguntas

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

respuestasCorrecto

push, pull_request, schedule и workflow_dispatch.

explicaciones

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

respuestasIncorrecto

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

respuestasIncorrecto

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


preguntas

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

respuestasCorrecto

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

explicaciones

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