أنشأها الذكاء الاصطناعيحسّنها الناس

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.

تفسيرات

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