Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Введение в GitHub Actions
github_actions_intro

Введение в GitHub Actions

Архитектура GitHub Actions, основные компоненты, триггеры и первые шаги.

Введение в GitHub Actions

GitHub Actions — мощная платформа автоматизации прямо в вашем репозитории. Изучите основы для создания первых workflow.

#Что такое GitHub Actions?

GitHub Actions — встроенная система CI/CD в GitHub, которая позволяет автоматизировать рабочие процессы прямо в репозитории.

Возможности GitHub Actions:

  • CI/CD пайплайны для сборки, тестирования и деплоя
  • Автоматизация рутинных задач (релизы, уведомления)
  • Реагирование на события GitHub (issues, pull requests)
  • Планирование задач по расписанию

#Архитектура GitHub Actions

┌─────────────────────────────────────────────────┐
│                 Workflow (.yml)                 │
│  ┌─────────────┐  ┌─────────────┐              │
│  │    Job 1    │  │    Job 2    │              │
│  │  ┌───────┐  │  │  ┌───────┐  │              │
│  │  │ Step  │  │  │  │ Step  │  │              │
│  │  └───────┘  │  │  └───────┘  │              │
│  └─────────────┘  └─────────────┘              │
└─────────────────────────────────────────────────┘
                      ↓
              ┌───────────────┐
              │    Runner     │
              │  (VM/Container)│
              └───────────────┘

#Основные компоненты

#1. Workflow

Workflow — конфигурация, описывающая весь процесс автоматизации. Хранится в файле .github/workflows/<name>.yml.

name: CI Pipeline on: push: branches: [main] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npm test

#2. Jobs

Job — единица выполнения, состоящая из шагов. Jobs могут выполняться последовательно или параллельно.

jobs: lint: runs-on: ubuntu-latest steps: - run: npm run lint test: runs-on: ubuntu-latest needs: lint # Зависимость от job lint steps: - run: npm test

#3. Steps

Step — отдельная задача в составе job. Бывает двух типов:

Запуск команды:

steps: - run: npm install - run: npm test

Использование action:

steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '20'

#4. Actions

Actions — готовые блоки кода для переиспользования. Публикуются на GitHub Marketplace.

Популярные official actions:

ActionОписание
actions/checkout@v4Получение кода репозитория
actions/setup-node@v4Установка Node.js
actions/setup-python@v5Установка Python
actions/upload-artifact@v4Сохранение артефактов
actions/download-artifact@v4Загрузка артефактов

#5. Runner

Runner — сервер, на котором выполняется job.

Hosted runners (предоставлены GitHub):

RunnerОписание
ubuntu-latestПоследняя Ubuntu (22.04)
ubuntu-22.04Ubuntu 22.04
windows-latestПоследняя Windows Server
macos-latestПоследняя macOS

Self-hosted runners:

  • Ваши собственные серверы
  • Полный контроль над окружением
  • Доступ к внутренней сети компании

#Триггеры (Triggers)

Триггеры определяют, когда запускается workflow.

#Push

on: push: branches: - main - 'release/*' tags: - 'v*' paths: - 'src/**'

#Pull Request

on: pull_request: branches: - main types: - opened - synchronize - reopened

#Schedule (Cron)

on: schedule: # Каждый день в 00:00 UTC - cron: '0 0 * * *' # Каждые 15 минут - cron: '*/15 * * * *'

#Manual (workflow_dispatch)

on: workflow_dispatch: inputs: environment: description: 'Окружение для деплоя' required: true default: 'staging' type: choice options: - staging - production

#Другие триггеры

on: issue_comment: types: [created] release: types: [published] workflow_run: workflows: ['CI'] types: [completed]

#Первый workflow: пошагово

Создадим простой CI-пайплайн для Node.js проекта.

#Шаг 1: Создание файла

Создайте файл .github/workflows/ci.yml:

name: Node.js CI

#Шаг 2: Определение триггеров

name: Node.js CI on: push: branches: [main] pull_request: branches: [main]

#Шаг 3: Добавление jobs

name: Node.js CI on: push: branches: [main] pull_request: branches: [main] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' - name: Install dependencies run: npm ci - name: Run tests run: npm test - name: Build run: npm run build

#Шаг 4: Проверка

Запушьте изменения в репозиторий. Workflow запустится автоматически.

Где смотреть результат:

  1. Перейдите в репозиторий на GitHub
  2. Вкладка Actions
  3. Выберите workflow Node.js CI
  4. Просмотрите логи выполнения

#Переменные окружения

GitHub Actions автоматически устанавливает переменные окружения:

jobs: test: runs-on: ubuntu-latest steps: - run: echo "Repository: $GITHUB_REPOSITORY" - run: echo "Branch: $GITHUB_REF" - run: echo "SHA: $GITHUB_SHA"

Полезные переменные:

ПеременнаяОписание
GITHUB_REPOSITORYВладелец/имя репозитория
GITHUB_REFВетка или тег
GITHUB_SHASHA коммита
GITHUB_ACTORИмя пользователя, запустившего workflow
GITHUB_WORKSPACEПуть к рабочей директории

#Секреты (Secrets)

Для хранения конфиденциальных данных используйте Secrets:

Настройка:

  1. Settings → Secrets and variables → Actions
  2. New repository secret
  3. Добавьте секрет (например, API_KEY)

Использование в workflow:

jobs: deploy: runs-on: ubuntu-latest steps: - name: Deploy run: ./deploy.sh env: API_KEY: ${{ secrets.API_KEY }}

#Артефакты

Артефакты — файлы, созданные в процессе выполнения workflow.

Сохранение артефакта:

steps: - name: Upload artifact uses: actions/upload-artifact@v4 with: name: build-output path: dist/

Использование артефакта в другом job:

jobs: build: runs-on: ubuntu-latest steps: - uses: actions/upload-artifact@v4 with: name: my-artifact path: dist/ deploy: runs-on: ubuntu-latest needs: build steps: - uses: actions/download-artifact@v4 with: name: my-artifact path: dist/

#Матрица сборки (Matrix)

Matrix позволяет запускать job с разными параметрами:

jobs: test: runs-on: ubuntu-latest strategy: matrix: node-version: [18, 20, 22] os: [ubuntu-latest, windows-latest] steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - run: npm test

Это создаст 6 комбинаций (3 версии Node.js × 2 ОС).

Далее: Введение в GitLab CI