Введение
GitHub Actions — это встроенная в GitHub система автоматизации workflow. Она реагирует на события в репозитории, такие как отправка изменений, pull request или ручной запуск, а затем автоматически выполняет заданные задания.
С помощью этой автоматизации можно выполнять множество DevOps-задач: тестировать код, собирать артефакты и развёртывать приложения. Список инструкций называется workflow.
На более высоком уровне workflow — это описание конвейера. Оно превращает события в репозитории в повторяемую автоматизацию, поэтому последовательность действий не зависит от того, помнит ли конкретный человек каждый шаг и правильно ли его выполняет.
В этой лабораторной работе вы создадите свою первую инструкцию (workflow) для этого робота. Вы изучите четыре основных компонента, из которых состоит любой workflow:
- Триггеры: когда робот должен проснуться? Например, когда вы отправляете код в репозиторий.
- Задания: какую основную задачу должен выполнить робот?
- Runner: какой компьютер робот должен использовать для работы?
- Шаги: какие конкретные команды должен выполнить робот?
К концу лабораторной работы у вас будет работающий конвейер, который автоматически выводит приветствие при каждом обновлении кода.
Предварительные требования
GitHub Actions важен потому, что современная разработка программного обеспечения опирается на повторяемую автоматизацию, а не на ручные нажатия и необходимость помнить последовательность действий.
Создайте репозиторий
Чтобы начать использовать GitHub Actions, сначала нужен проект на GitHub. Для этого модуля мы создадим новый репозиторий. Этот репозиторий будет использоваться в нескольких лабораторных работах, поэтому внимательно соблюдайте соглашение об именовании.
Откройте веб-браузер и войдите в GitHub. Нажмите значок + в правом верхнем углу любой страницы GitHub и выберите New repository.
В поле «Repository name» введите github-actions-basics. Сделайте репозиторий Public, чтобы он был бесплатным и удобным для использования. Установите флажок Add a README file, чтобы инициализировать репозиторий этим файлом. Затем нажмите кнопку Create repository.

Теперь, когда проект создан в облаке (GitHub), нужно скопировать его в среду этой лабораторной работы. Такую операцию называют клонированием.
В расположенном ниже терминале выполните команду git clone. Замените your-username своим именем пользователя GitHub.
cd ~/project
git clone https://github.com/your-username/github-actions-basics.git
После завершения клонирования появится новая папка github-actions-basics. Перейдите в неё, чтобы начать работу.
cd ~/project/github-actions-basics
GitHub Actions строго определяет расположение файлов с инструкциями. Он проверяет только специальную скрытую папку .github, внутри которой находится папка workflows. Если разместить файлы workflow в другом месте, робот просто их проигнорирует.
Создайте необходимую структуру каталогов. Параметр -p указывает команде создать сразу родительский и дочерний каталоги, если их ещё нет.
mkdir -p .github/workflows
Затем создайте в новой папке пустой файл main.yml. В этот файл мы запишем инструкции.
touch .github/workflows/main.yml
Проверить правильность настройки можно, рекурсивно выведя список файлов. Вы должны увидеть папку .github, внутри неё — workflows, а внутри workflows — файл main.yml.
ls -R .github
Определите триггер
Файлы workflow записываются в формате YAML. Это простой текстовый формат, в котором для организации данных используются отступы (пробелы), как в структурированном списке.
Каждому workflow нужны имя и триггер. Триггер сообщает роботу, когда начинать работу. Без триггера workflow никогда не запустится. Мы хотим, чтобы робот просыпался каждый раз, когда мы отправляем новый код в репозиторий.
Эта событийная модель — одна из основных идей CI/CD-систем. Конвейеры реагируют на изменения в жизненном цикле программного обеспечения, а не ждут, пока кто-то вручную запустит скрипты.
Откройте пустой файл main.yml в текстовом редакторе nano.
nano .github/workflows/main.yml
Введите в файл следующее содержимое.
name: First Workflow
on: push
Ключевое слово name задаёт имя workflow, которое отображается на GitHub. Строка on: push — это команда, определяющая запуск: «При событии push выполнить workflow».
Нажмите Ctrl+X, затем Y, а потом Enter, чтобы сохранить изменения и выйти из редактора.
Определите задание и runner
Теперь робот знает, когда просыпаться. Осталось указать ему, где работать. Для этого нужно определить Job и Runner.
Job — это группа задач. В workflow может быть несколько заданий, например «Test Code» и «Deploy App», но сейчас мы создадим только одно.
Runner — это сервер, который GitHub предоставляет для выполнения задания. Представьте, что это компьютер, за которым работает ваш робот-помощник. Мы используем ubuntu-latest, то есть GitHub предоставит нам новый компьютер с последней версией Ubuntu Linux.
Новый runner важен потому, что задания workflow должны выполняться воспроизводимо. Каждый запуск начинается в чистой среде, а не использует остатки предыдущей ручной настройки.
Снова откройте файл main.yml.
nano .github/workflows/main.yml
Добавьте следующие строки в конец файла. Внимательно следите за отступами. В YAML отступы имеют критическое значение. Слово first-job должно иметь отступ в два пробела, а runs-on — в четыре пробела.
jobs:
first-job:
runs-on: ubuntu-latest
Теперь полный файл должен выглядеть так, как показано ниже. Убедитесь, что структура полностью совпадает с примером.
name: First Workflow
on: push
jobs:
first-job:
runs-on: ubuntu-latest
Сохраните файл и выйдите из редактора (Ctrl+X, Y, Enter).
Добавьте шаги и отправьте изменения
У нас уже есть «когда» (on push) и «где» (ubuntu-latest). Теперь определим самое важное — «что именно делать». Это задаётся в разделе Steps.
Шаги — это конкретные команды, которые выполнит робот. В первой лабораторной работе мы просто попросим робота вывести приветствие. Для выполнения стандартной команды Linux используется ключевое слово run.
В последний раз откройте файл main.yml.
nano .github/workflows/main.yml
Добавьте раздел steps под first-job. Убедитесь, что строка steps: выровнена по вертикали со строкой runs-on:.
steps:
- name: Print greeting
run: echo "Hello World from LabEx"
Дефис - обозначает элемент списка. В данном случае мы перечисляем шаги задания.
Итоговый файл должен выглядеть точно так:
name: First Workflow
on: push
jobs:
first-job:
runs-on: ubuntu-latest
steps:
- name: Print greeting
run: echo "Hello World from LabEx"
Сохраните файл и выйдите из редактора.
Теперь, когда инструкция для робота готова, нужно отправить её на GitHub. Робот проверяет код, размещённый на GitHub, а не код на вашем локальном компьютере.
Выполните стандартные команды Git, чтобы сохранить и загрузить изменения.
git add .
git commit -m "Add my first workflow"
git push
Система запросит имя пользователя и пароль GitHub.
Важно: если появится ошибка о том, что поддержка аутентификации по паролю удалена, вместо пароля учётной записи используйте Personal Access Token (PAT). Создать его можно в GitHub: Settings -> Developer settings -> Personal access tokens. Выберите «Tokens (classic)», создайте новый токен с областью repo и вставьте этот токен в терминал, когда система запросит пароль.

После успешного выполнения push вернитесь в браузер. Откройте страницу своего репозитория и найдите вкладку Actions в верхней части страницы.
Вы должны увидеть workflow с именем «First Workflow». Рядом может отображаться жёлтый вращающийся круг (выполнение) или зелёная галочка (успешное завершение). Нажмите на workflow. Затем внутри него нажмите first-job, чтобы просмотреть сведения. Разверните шаг «Print greeting» — в журналах вы увидите выведенное сообщение «Hello World from LabEx».

Итоги
Поздравляем! Вы успешно создали и запустили свой первый workflow GitHub Actions.
В этой лабораторной работе вы изучили четыре основных элемента файла workflow:
- Триггер (
on): сообщает action, когда нужно начать работу. - Job: объединяет задачи.
- Runner (
runs-on): задаёт серверную среду. - Step: определяет команду, которую нужно выполнить.
Теперь у вас есть работающий «робот-помощник», который следит за вашим репозиторием. В следующих лабораторных работах мы научим этого помощника выполнять более полезные задачи, например автоматически тестировать код!



