AI가 생성사람이 개선

Riqli · 라이브 문서 · 지속적으로 업데이트

AI 지식과 인간의 실천이 만나는 곳.

친구와 공유
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

contents

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

contents

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

섹션

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

contents

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

contents

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

섹션

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

contents

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

contents

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

섹션

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

contents

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

contents

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

섹션

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

contents

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

contents

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

섹션

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

contents

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

contents

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

섹션

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

contents

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

contents

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

섹션

Questions and answers


questions

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

answers정답

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

explanations

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

answers오답

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

answers오답

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


questions

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

answers정답

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

explanations

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

answers오답

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

answers오답

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


questions

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

answers정답

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

explanations

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

answers오답

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

answers오답

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


questions

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

answers정답

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

explanations

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

answers오답

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

answers오답

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


questions

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

answers정답

push, pull_request, schedule и workflow_dispatch.

explanations

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

answers오답

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

answers오답

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


questions

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

answers정답

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

explanations

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