Первый workflow: реагируем на push
Своими руками создаём первый рабочий workflow и смотрим зелёную галочку.
Workflow «оживает», как только файл
.ymlпопадает в каталог.github/workflows/в любой ветке репозитория.
Куда класть файл
GitHub ищет workflow строго в каталоге .github/workflows/ в корне репозитория. Имя файла любое, расширение — .yml или .yaml. Создадим первый файл:
mkdir -p .github/workflows
touch .github/workflows/ci.yml
Содержимое первого workflow
Опишем простейший процесс: на каждый push скачать код и запустить пару команд.
name: CI
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Получить код
uses: actions/checkout@v4
- name: Показать версию системы
run: uname -a
- name: Список файлов
run: ls -la
Разберём построчно:
name: CI— человекочитаемое имя workflow (видно во вкладке Actions).on: push— триггер: запускать при каждом пуше в любую ветку.jobs.build— единственный job с произвольным именемbuild.runs-on: ubuntu-latest— выполнять на свежей виртуалке с Ubuntu.steps— список шагов; у каждого опциональноеnameдля читаемых логов.
Зачем нужен checkout
Это типичная ловушка новичка: runner стартует пустым, вашего кода на нём нет. Action actions/checkout@v4 клонирует репозиторий в рабочую директорию. Без него команды вроде ls покажут пустоту, а сборка не найдёт исходники. Поэтому checkout почти всегда — первый шаг.
Запуск и результат
Коммитим файл и пушим:
git add .github/workflows/ci.yml
git commit -m "Добавил первый workflow"
git push
Открываем вкладку Actions в репозитории на GitHub — там появится запуск с именем последнего коммита. Кликнув по нему, увидим job build и логи каждого шага. Успешный прогон выглядит так:
Вывод:
build ✓ Получить код ✓ Показать версию системы ✓ Список файлов ✓
Зелёная галочка означает, что все шаги завершились с кодом возврата 0. Если любая команда вернёт ненулевой код, шаг станет красным, а job — упавшим.
Итог
- Workflow-файлы живут в
.github/workflows/*.yml. on: pushзапускает процесс на каждый пуш.actions/checkoutобязателен, чтобы код вообще появился на runner.- Результат и логи — во вкладке Actions; ненулевой код команды роняет шаг.