ساخته‌شده توسط هوش مصنوعیبهبودیافته توسط مردم

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.

توضیحات

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