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>