HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>GitHub Actions - бесплатная для публичных репозиториев система непрерывной интеграции. Хекслет использует Actions во всех своих закрытых и открытых проектах (<a>пример</a>). С помощью Github Actions можно делать много полезного:</p>
1 <p>GitHub Actions - бесплатная для публичных репозиториев система непрерывной интеграции. Хекслет использует Actions во всех своих закрытых и открытых проектах (<a>пример</a>). С помощью Github Actions можно делать много полезного:</p>
2 <ul><li>Запустить проверку кода линтером и тестами</li>
2 <ul><li>Запустить проверку кода линтером и тестами</li>
3 <li>Выполнить деплой проекта</li>
3 <li>Выполнить деплой проекта</li>
4 <li>Опубликовать новую версию пакета</li>
4 <li>Опубликовать новую версию пакета</li>
5 <li>Подключить оповещения в мессенджер о событиях в репозитории (новые issue, PR)</li>
5 <li>Подключить оповещения в мессенджер о событиях в репозитории (новые issue, PR)</li>
6 <li>и многое другое</li>
6 <li>и многое другое</li>
7 </ul><p>В этом уроке мы разберемся в основных концепциях системы, а затем рассмотрим пример настройки, чтобы быстро начать работу с Actions в своем репозитории.</p>
7 </ul><p>В этом уроке мы разберемся в основных концепциях системы, а затем рассмотрим пример настройки, чтобы быстро начать работу с Actions в своем репозитории.</p>
8 <p>Общий принцип работы Github Actions такой: в нужном репозитории создается директория<em>.github/workflows</em>. Внутри нее размещаются файлы с описанием шагов, которые нужно выполнить на различные действия. Данные в файлах хранятся в формате YAML. Ниже описание процесса "show-directory", который запускается на пуш в репозиторий. В этом примере описание процесса хранится в файле<em>show-directory.yml</em>. Можно указывать любое имя файла, главное сохранять расширение и чтобы имя соответствовало по смыслу. В терминах Github Actions такое описание процесса называется воркфлоу. В нем определяется, на какие события реагировать и что конкретно делать:</p>
8 <p>Общий принцип работы Github Actions такой: в нужном репозитории создается директория<em>.github/workflows</em>. Внутри нее размещаются файлы с описанием шагов, которые нужно выполнить на различные действия. Данные в файлах хранятся в формате YAML. Ниже описание процесса "show-directory", который запускается на пуш в репозиторий. В этом примере описание процесса хранится в файле<em>show-directory.yml</em>. Можно указывать любое имя файла, главное сохранять расширение и чтобы имя соответствовало по смыслу. В терминах Github Actions такое описание процесса называется воркфлоу. В нем определяется, на какие события реагировать и что конкретно делать:</p>
9 <p>Этот воркфлоу просто печатает на экран содержимое текущей директории. Реальные воркфлоу выглядят сложнее, но прямо сейчас нам важно ухватить общую структуру, не отвлекаясь на конкретный процесс. У любой системы непрерывной интеграции есть набор блоков, из которых строится процесс выполнения. Он примерно одинаковый для всех за исключением некоторых деталей. Дальше мы кратко пробежимся по этим блокам, а уже в следующих уроках подробно поговорим про некоторые из них.</p>
9 <p>Этот воркфлоу просто печатает на экран содержимое текущей директории. Реальные воркфлоу выглядят сложнее, но прямо сейчас нам важно ухватить общую структуру, не отвлекаясь на конкретный процесс. У любой системы непрерывной интеграции есть набор блоков, из которых строится процесс выполнения. Он примерно одинаковый для всех за исключением некоторых деталей. Дальше мы кратко пробежимся по этим блокам, а уже в следующих уроках подробно поговорим про некоторые из них.</p>
10 <h2>Основные понятия</h2>
10 <h2>Основные понятия</h2>
11 <p>На картинке ниже показаны основные концепции GitHub Actions. Разберем их по порядку.</p>
11 <p>На картинке ниже показаны основные концепции GitHub Actions. Разберем их по порядку.</p>
12 <ul><li><p>Воркфлоу / Workflows</p>
12 <ul><li><p>Воркфлоу / Workflows</p>
13 <p>Каждый репозиторий на GitHub может содержать один или несколько воркфлоу. Каждый воркфлоу определяется в отдельном файле конфигурации в каталоге репозитория<em>.github/workflows</em>. Несколько воркфлоу могут выполняться параллельно.</p>
13 <p>Каждый репозиторий на GitHub может содержать один или несколько воркфлоу. Каждый воркфлоу определяется в отдельном файле конфигурации в каталоге репозитория<em>.github/workflows</em>. Несколько воркфлоу могут выполняться параллельно.</p>
14 </li>
14 </li>
15 <li><p>События / Events</p>
15 <li><p>События / Events</p>
16 <p>Воркфлоу может запускаться одним или несколькими событиями. Это могут быть внутренние события GitHub (например, пуш, релиз или пул-реквест), запланированные события (запускаются в определенное время - например, cron) или произвольные внешние события (запускаются вызовом Webhook API GitHub).</p>
16 <p>Воркфлоу может запускаться одним или несколькими событиями. Это могут быть внутренние события GitHub (например, пуш, релиз или пул-реквест), запланированные события (запускаются в определенное время - например, cron) или произвольные внешние события (запускаются вызовом Webhook API GitHub).</p>
17 </li>
17 </li>
18 <li><p>Задания / Jobs</p>
18 <li><p>Задания / Jobs</p>
19 <p>Воркфлоу состоит из одного или нескольких заданий. Задание содержит набор команд, которые запускаются вместе с рабочим процессом. По умолчанию при запуске воркфлоу все его задания выполняются параллельно, однако между ними можно определить зависимость, чтобы они выполнялись последовательно.</p>
19 <p>Воркфлоу состоит из одного или нескольких заданий. Задание содержит набор команд, которые запускаются вместе с рабочим процессом. По умолчанию при запуске воркфлоу все его задания выполняются параллельно, однако между ними можно определить зависимость, чтобы они выполнялись последовательно.</p>
20 </li>
20 </li>
21 <li><p>Раннеры / Runners</p>
21 <li><p>Раннеры / Runners</p>
22 <p>Каждое задание выполняется на определенном раннере - временном сервере на GitHub с выбранной операционной системой (Linux, macOS или Windows). Также существуют<a>автономные раннеры</a>, которые позволяют создать свое окружение для выполнения экшена.</p>
22 <p>Каждое задание выполняется на определенном раннере - временном сервере на GitHub с выбранной операционной системой (Linux, macOS или Windows). Также существуют<a>автономные раннеры</a>, которые позволяют создать свое окружение для выполнения экшена.</p>
23 </li>
23 </li>
24 <li><p>Шаги / Steps</p>
24 <li><p>Шаги / Steps</p>
25 <p>Задания состоят из последовательности шагов. Шаг - это либо команда оболочки (shell command), либо экшен (action). Все шаги задания выполняются последовательно на раннере, связанном с заданием. По умолчанию в случае сбоя шага все следующие шаги задания пропускаются.</p>
25 <p>Задания состоят из последовательности шагов. Шаг - это либо команда оболочки (shell command), либо экшен (action). Все шаги задания выполняются последовательно на раннере, связанном с заданием. По умолчанию в случае сбоя шага все следующие шаги задания пропускаются.</p>
26 </li>
26 </li>
27 <li><p>Экшен / Actions</p>
27 <li><p>Экшен / Actions</p>
28 <p>Экшен - многократно используемый блок кода, который может служить шагом задания. Каждый экшен может принимать на вход параметры и создавать любые значения, которые затем можно использовать в других экшенах. Разработчики могут создавать собственные экшены или использовать опубликованные сообществом GitHub. Общих экшенов около тысячи, все они доступны на<a>GitHub Marketplace</a>.</p>
28 <p>Экшен - многократно используемый блок кода, который может служить шагом задания. Каждый экшен может принимать на вход параметры и создавать любые значения, которые затем можно использовать в других экшенах. Разработчики могут создавать собственные экшены или использовать опубликованные сообществом GitHub. Общих экшенов около тысячи, все они доступны на<a>GitHub Marketplace</a>.</p>
29 </li>
29 </li>
30 </ul>
30 </ul>