Что делает
Автоматизирует сборку, проверки и деплой прямо в GitHub: конвейеры на YAML запускаются на события репозитория и выполняются на предоставляемых машинах.
GitHub Actions — встроенная в GitHub платформа CI/CD: автоматизация сборки, проверок и деплоя через YAML-файлы прямо в репозитории. Конвейеры запускаются на события — от пуша до релиза — без отдельного CI-сервера.
GitHub Actions — система непрерывной интеграции и доставки, встроенная прямо в GitHub. Конвейеры описываются YAML-файлами в папке .github/workflows и запускаются на события репозитория: пуш, pull request, релиз, расписание, ручной триггер. Не нужен отдельный CI-сервер — GitHub предоставляет вычислительные машины (runners), на которых выполняются задачи.
Сила платформы — в marketplace готовых действий (actions): типовые шаги вроде checkout кода, установки языка или деплоя переиспользуются одной строкой. Иерархия проста: конвейер состоит из задач (jobs), задача — из шагов (steps), шаг вызывает действие или команду. Чаще всего GitHub Actions спрашивают с DevOps-инженеров и разработчиков, автоматизирующих проверки и выкатку своего кода.
Для этого навыка доступны ограниченные данные (менее 50 вакансий или нет зарплатных данных). Аналитика носит ориентировочный характер.
Автоматизирует сборку, проверки и деплой прямо в GitHub: конвейеры на YAML запускаются на события репозитория и выполняются на предоставляемых машинах.
DevOps-инженеры строят конвейеры доставки; разработчики автоматизируют проверки и выкатку своего кода — GitHub Actions доступен любому проекту на GitHub.
Стандарт CI/CD для проектов на GitHub. Доминирующая роль — DevOps-инженер; в парах Docker, Kubernetes и облачные платформы деплоя.
GitHub Actions — платформа автоматизации, интегрированная в GitHub. Вместо настройки внешнего CI-сервера (Jenkins, отдельный GitLab) конвейер описывается YAML-файлом в самом репозитории и живёт рядом с кодом. При наступлении события — пуш, pull request, создание релиза — GitHub запускает конвейер на своей виртуальной машине. Это убрало барьер входа в CI/CD: любой проект на GitHub получает автоматизацию без инфраструктуры, а публичные репозитории — бесплатно.
Иерархия из четырёх уровней. Workflow — весь конвейер, один YAML-файл, запускаемый на события. Job — задача внутри конвейера, выполняется на отдельной машине; задачи по умолчанию идут параллельно, но можно задать зависимости. Step — шаг внутри задачи, выполняется последовательно. Action — переиспользуемый компонент, вызываемый шагом (например, actions/checkout для получения кода). Понимание этой иерархии — основа чтения и написания любого конвейера.
Секция on задаёт события запуска: push и pull_request по веткам, release, schedule по расписанию (cron), workflow_dispatch для ручного запуска. Runner — машина, на которой выполняется задача: GitHub даёт готовые (ubuntu-latest, windows, macos), а для особых нужд подключают собственные (self-hosted). Правильный выбор триггеров определяет, когда конвейер запускается, а runner — где и с какими ресурсами он выполняется.
Путь от события в репозитории до результата на предоставленной машине.
Событие запускает конвейер
Пуш, pull request или расписание, указанные в секции on, запускают workflow; GitHub выделяет виртуальную машину (runner) для выполнения его задач.
Задачи выполняют шаги
Каждая задача на своей машине проходит шаги: получает код, ставит зависимости, вызывает действия marketplace и команды — параллельно или по заданным зависимостям.
Результат возвращается в репозиторий
Статус конвейера отображается в pull request и коммите, артефакты сохраняются, деплой выкатывает приложение — команда сразу видит итог прямо в GitHub.
GitHub Actions переносится между ролями: DevOps-инженер, Python-разработчик, Бэкенд-разработчик. В одном треке этот навык может быть основным рабочим инструментом, а в другом - сильным прикладным усилителем основной специализации.
DevOps-инженер держит 95.5% вакансий по навыку.
Ещё 7 ролей используют GitHub Actions
Текущий срез показывает активные вакансии сейчас. Распределение по ролям рассчитано по расширенной исторической выборке, поэтому значения могут быть выше текущего количества активных вакансий.
GitHub Actions ценен не абстрактным знанием инструмента, а повторяющимися рабочими задачами — ниже они разобраны так, как встречаются в реальной работе.
Базовый конвейер проверок
Минимальный workflow: тесты и линтер на каждый push и pull request.
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main]
pull_request:
jobs:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Установка зависимостей
run: pip install -r requirements.txt
- name: Проверки
run: |
pytest
ruff check . Матричная сборка
Один job проверяет код на нескольких версиях языка параллельно.
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
python: ["3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- run: pytest
# один блок -> три параллельных прогона
# по каждой версии Python Секреты в конвейере
Токены подставляются из secrets репозитория, а не хранятся в коде.
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Логин в реестр
run: |
echo "${{ secrets.REGISTRY_TOKEN }}" \
| docker login registry.example.com \
-u ci --password-stdin
- name: Сборка и публикация
run: |
docker build -t registry.example.com/app:${{ github.sha }} .
docker push registry.example.com/app:${{ github.sha }} Деплой через OIDC
Временный токен доступа к облаку вместо долгоживущего ключа — современный стандарт безопасности.
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
id-token: write # разрешить запрос OIDC-токена
contents: read
steps:
- uses: actions/checkout@v4
# облако доверяет этому репозиторию через OIDC;
# ключи НЕ хранятся в secrets вообще
- name: Настройка доступа к облаку
uses: cloud-provider/configure@v1
with:
role-to-assume: arn:...:role/deployer
audience: sts.cloud Кэширование зависимостей
Кэш ускоряет прогоны, не скачивая зависимости заново каждый раз.
steps:
- uses: actions/checkout@v4
- name: Кэш зависимостей
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: pip-${{ hashFiles('requirements.txt') }}
restore-keys: pip-
- run: pip install -r requirements.txt
# при неизменных зависимостях установка
# берётся из кэша за секунды Зависимости между задачами
needs выстраивает порядок: деплой только после успешной сборки.
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: echo "собираем"
deploy:
needs: build # ждёт успешного build
runs-on: ubuntu-latest
environment: production # требует подтверждения
steps:
- run: echo "выкатываем"
# без needs задачи выполнялись бы параллельно Вписать токен прямо в YAML вместо secrets — утечка: файл в репозитории виден всем с доступом, а в публичном — миру. Все чувствительные значения только через secrets, а лучше — OIDC без долгоживущих ключей вовсе.
Конвейер на pull_request от форка с доступом к secrets — дыра: чужой код в PR может их украсть. Для форков использовать pull_request (без секретов), а не pull_request_target без крайней осторожности.
uses: some/action@main тянет свежую версию, которая может сломаться или оказаться скомпрометированной. Фиксировать версии тегом (@v4) или SHA — защита от неожиданных изменений и атак на цепочку.
Оставлять конвейеру полные права по умолчанию — лишний риск при компрометации. Задавать минимальные permissions на уровне конвейера или задачи: только то, что реально нужно этому процессу.
Скачивать и собирать зависимости заново каждый прогон — минуты впустую и лишняя стоимость. Кэширование зависимостей и артефактов между задачами кратно ускоряет конвейер — базовая оптимизация.
GitHub Actions — стандарт CI/CD для проектов, живущих на GitHub, и это определяет спрос. Доминирующая роль — DevOps-инженер, но конвейеры пишут и разработчики: автопроверки своего кода стали нормой. Работодатель ждёт не копипаста готовых конвейеров, а понимания структуры workflow/job/step, безопасной работы с секретами и OIDC, матричных сборок. В парах GitHub Actions идёт с Docker, Kubernetes и облачными платформами деплоя.
GitHub Actions востребован там, где инструмент реально ускоряет повторяемые задачи команды, а не существует отдельной теорией.
Спрос держится дольше, когда навык нужен не эпизодически, а как часть ежедневного цикла разработки, проверки или доставки.
GitHub Actions чаще ищут там, где процесс уже стандартизирован и без этого инструмента команда теряет скорость и предсказуемость.
GitHub Actions формирует устойчивый спрос внутри своего рабочего сегмента.
GitHub Actions сохраняет устойчивый прикладной спрос на рынке: 89 активных вакансий, #137 по рынку, 1.3% IT-вакансий. Ниже показано число открытых вакансий на конец каждого месяца: это исторический ряд по состоянию на конец месяца, а не текущий срез рынка на сегодня.
#137 по рынку • 1.3% IT-вакансий
-13 вакансий и -9% к предыдущему месяцу.
GitHub Actions редко живёт изолированно: чаще всего рынок видит его рядом с GitHub, CI/CD, GitLab. Самая плотная связка сейчас - GitHub: оба навыка встречаются вместе в 100% вакансий.
Главная связка: GitHub • 100% вакансий. Показываем общерыночные связки GitHub Actions: не junior-минимум из блока выше, а навыки, которые чаще всего встречаются рядом с ним в одной вакансии.
навыки, которые рынок чаще всего видит рядом в одной вакансии
Сейчас на рынке 5 активных junior-вакансий с GitHub Actions. Это 6.2% всех вакансий по навыку, поэтому для старта важнее всего смотреть на реальный объём junior-окна и на стек, который рынок ждёт рядом.
6.2% всех вакансий по навыку • Senior / Junior 7.9x
Окно входа узкое: рынок чаще нанимает с опытом.
Медианная вакансия с GitHub Actions ожидает около 23 навыков в стеке. Это широкий стартовый набор: рынок обычно ищет не один изолированный инструмент, а рабочую комбинацию соседних навыков.
Владение GitHub Actions по-разному отражается в резюме в зависимости от уровня. Ниже — что это означает и что показать для каждого грейда.
С чем платформа работает в связке в реальных проектах.
Сборка и публикация образов в конвейере
Практически любой современный сервис
Сборка образов заметно замедляет прогон без кэша.
Цель деплоя из конвейера
Выкатка контейнеризованных приложений
Доступ к кластеру настраивается безопасно через OIDC.
Деплой инфраструктуры и приложений
Выкатка в AWS, Yandex Cloud и другие
Долгоживущие ключи — антипаттерн, использовать OIDC.
Готовые компоненты для типовых шагов
Стандартные операции конвейера
Чужие действия — вектор атаки, версии фиксировать.
Инфраструктура как код в конвейере
Автоматизация изменений инфраструктуры
Plan и apply в CI требуют аккуратной работы с состоянием.
GitHub Actions применяется для автоматизации всего пути кода — от проверки при каждом изменении до выкатки в продакшн.
При каждом PR запускаются тесты, линтеры и проверка типов: код не вливается в основную ветку, пока проверки не прошли — базовая гигиена командной разработки.
После проверок конвейер выкатывает приложение в Kubernetes или облако через OIDC без вшитых ключей: полный путь от коммита до продакшна автоматически.
Проверка совместимости на нескольких версиях языка и операционных систем одновременно: одна матрица порождает параллельные прогоны по всем комбинациям.
GitHub Actions заметен в 4 направлениях рынка с долей выше 5%.
Возможности, сделавшие платформу стандартом CI/CD на GitHub.
Конвейер живёт в репозитории и выполняется на машинах GitHub — не нужно поднимать и обслуживать отдельный CI-сервер.
Тысячи готовых компонентов для типовых шагов — checkout, установка языка, деплой — вызываются одной строкой uses.
Одна задача проверяется в множестве вариантов версий и ОС параллельно — совместимость без дублирования конвейера.
Секреты хранятся отдельно от кода, а OIDC даёт доступ к облаку временным токеном без долгоживущих ключей.
Три инструмента CI/CD — выбор чаще определяет платформа.
Обе — встроенные в свою платформу CI/CD с похожей YAML-моделью (задачи, шаги). Выбор чаще определяет, где живёт код: GitHub — Actions, GitLab — GitLab CI. GitHub Actions выигрывает marketplace...
Jenkins — мощный самостоятельный CI-сервер с плагинами, но его нужно устанавливать и обслуживать. GitHub Actions встроен и не требует инфраструктуры. Jenkins держится в enterprise со сложными...
CircleCI — внешний CI-сервис, интегрируемый с репозиторием, исторически силён скоростью и гибкостью настройки. GitHub Actions выигрывает нулевой интеграцией для GitHub-проектов и marketplace. Для...
Workflow GitHub Actions описывается в YAML-файлах. Рассмотрим ключевые элементы на примере типового CI-пайплайна.
Событие, запускающее workflow: push, pull_request, schedule, release, workflow_dispatch. Уточняется ветками и путями.
Одна или несколько задач. Каждая выполняется на своём runner. Порядок задаётся через needs.
Шаги внутри job: shell-команды (run) или готовые actions (uses). Выполняются последовательно.
Готовые actions из Marketplace: checkout, setup-node, cache, docker/login-action. Фиксируются по версии (@v4).
Матрица параметров (ОС, версия языка) для параллельного запуска одного job с разными настройками.
Зашифрованные переменные (токены, пароли). Доступны через ${{ secrets.NAME }}. Указываются в настройках репозитория.
Используйте @v4 или точный SHA-коммит, никогда @main или @latest. Иначе обновление action сломает workflow.
Объединяйте команды в один run через && или отдельный скрипт. Каждый шаг — это отдельный процесс и потенциально сетевой запрос (скачивание action). Слишком много мелких шагов увеличивает накладные...
Кешируйте npm, pip, Maven через actions/cache. Сокращает время с 5–10 минут до 30–60 секунд.
Даже приватный файл может быть скомпрометирован. Используйте secrets GitHub.
Предотвращает зависание workflow — задайте timeout-minutes: 10 для каждого job.
Перед использованием стороннего action изучите код и рейтинг, сканируйте зависимости через actions/dependency-review-action.
Явно задавайте permissions в YAML: contents: read, packages: write. Не выдавайте лишние права.
Для сложных пайплайнов используйте reusable workflows или разбивайте на несколько файлов.
Этот event даёт полный доступ к секретам. Используйте с осторожностью — ограничьте действия safe-list или проверяйте через действия.
Не подставляйте github.event.issue.title в run: без экранирования. Экранируйте через ${{ ... }}.
По умолчанию contents: write. Ограничьте через permissions: contents: read, packages: write.
Не передавайте GITHUB_TOKEN в action, который принимает token — используйте его только внутри workflow.
Добавьте dependency-review-action и Trivy (aquasecurity/trivy-action) для проверки уязвимостей.
Настройте approval для новых контрибьюторов или используйте pull_request с minimal permissions.
OIDC позволяет временным токенам доступа к облакам без хранения долгоживущих секретов.
Автоматическое обновление (dependabot) может подхватить вредоносную версию — проверяйте changelog.
Перспективы GitHub Actions завязаны не только на текущем спросе, но и на том, как навык встраивается в новые платформы, инструменты и рабочие контуры.
Доступ к облаку через временные OIDC-токены вместо долгоживущих секретов становится стандартом безопасности CI/CD. Хранение облачных ключей в secrets постепенно уходит как...
Атаки через скомпрометированные действия marketplace усилили внимание к supply-chain: фиксация версий по SHA, подпись артефактов, проверка зависимостей встраиваются в...
Автоматический разбор упавших прогонов, генерация конвейеров и предложения по оптимизации на основе AI ускоряют работу. Инструменты меняются, но понимание структуры и...
Репозиторий с конвейером от проверок до деплоя: тесты и линтеры на PR, матричная сборка, кэширование, публикация Docker-образа, выкатка через OIDC без вшитых ключей, окружение с подтверждением. Показывает владение всей...
Reusable workflow и composite action, вынесенные в отдельный репозиторий и вызываемые из нескольких проектов: единый безопасный процесс сборки для команды. Демонстрирует зрелый подход против копипаста конвейеров.
Первый рабочий конвейер на GitHub Actions пишется за час по примерам. Настоящий навык — безопасность, матрицы, переиспользование, оптимизация — набирается на реальных репозиториях.
Первый конвейер
Создать .github/workflows/ci.yml, запустить тесты на push. Понять базовую структуру: on, jobs, steps, uses и run. Первый зелёный прогон.
Анатомия и триггеры
Иерархия workflow → job → step → action, события (push, pull_request, schedule), зависимости между задачами (needs). Осознанно управлять запуском.
Действия из marketplace
checkout, setup-языка, кэширование зависимостей, сборка Docker. Понять, как переиспользовать готовые действия и зачем фиксировать их версии.
Секреты и безопасность
Хранение токенов в secrets, подстановка в YAML, минимум прав (permissions), опасность форков в pull_request. OIDC вместо долгоживущих ключей.
Соответствие — доля тем навыка, которые охватывает программа курса
Три шага от первого конвейера до безопасного деплоя.
Создать .github/workflows/ci.yml, запустить тесты на push. Понять базу: on, jobs, steps, uses и run. Первый зелёный прогон — за час по примерам из документации.
Иерархия workflow/job/step, триггеры, действия marketplace, зависимости через needs, матрицы. Собрать конвейер сборки и публикации образа.
Секреты, минимум прав, OIDC вместо ключей, окружения с подтверждением. Настроить деплой из конвейера — навык, который проверяют на собеседовании.
Для инструментов вроде GitHub Actions на одной странице полезно держать и объяснение роли на рынке, и быстрые переходы к официальным ресурсам.
Встроенная в GitHub система автоматизации: описываешь в YAML-файле, что делать при событиях репозитория (пуш, pull request), и GitHub сам это выполняет на своей машине — собирает, проверяет, деплоит. CI/CD без отдельного сервера, прямо рядом с кодом.
Иерархия из четырёх уровней: workflow — весь конвейер (один YAML-файл); job — задача, выполняется на отдельной машине, задачи идут параллельно; step — шаг внутри задачи, последовательно; action — готовый переиспользуемый компонент, вызываемый шагом. Понимание этой структуры — основа работы.
Чаще решает платформа хостинга: проект на GitHub — Actions, на GitLab — GitLab CI. Концептуально они очень близки (YAML, задачи, шаги). GitHub Actions выигрывает marketplace готовых действий; навыки между ними хорошо переносятся.
Только в secrets репозитория, никогда в коде конвейера — в YAML подставляются как ${{ secrets.NAME }}. Ещё лучше — OIDC: конвейер получает временный токен доступа к облаку на время выполнения, и долгоживущие ключи хранить не нужно вовсе.
Механизм, при котором облако доверяет конвейеру и выдаёт временный токен доступа на время прогона вместо постоянного ключа в secrets. Это устраняет риск утечки долгоживущих ключей — современный стандарт безопасного деплоя из CI.
strategy.matrix запускает одну задачу в нескольких вариантах параллельно — например, тесты на разных версиях языка и ОС. Одно описание порождает все комбинации как отдельные прогоны: эффективная проверка совместимости без дублирования конвейера.
Нет: GitHub предоставляет виртуальные машины (runners) для выполнения задач, публичным репозиториям — бесплатно в пределах лимитов. Свои runners (self-hosted) подключают лишь при особых нуждах — специфичное железо, закрытая сеть, большие объёмы.